lib/knapsack_pro/config/env.rb in knapsack_pro-4.1.0 vs lib/knapsack_pro/config/env.rb in knapsack_pro-5.0.0

- old
+ new

@@ -184,11 +184,20 @@ def fixed_test_suite_split? fixed_test_suite_split.to_s == 'true' end def fixed_queue_split - ENV.fetch('KNAPSACK_PRO_FIXED_QUEUE_SPLIT', false) + @fixed_queue_split ||= begin + env_name = 'KNAPSACK_PRO_FIXED_QUEUE_SPLIT' + computed = ENV.fetch(env_name, ci_env_for(:fixed_queue_split)).to_s + + if !ENV.key?(env_name) + KnapsackPro.logger.info("#{env_name} is not set. Using default value: #{computed}. Learn more at #{KnapsackPro::Urls::FIXED_QUEUE_SPLIT}") + end + + computed + end end def fixed_queue_split? fixed_queue_split.to_s == 'true' end @@ -244,20 +253,20 @@ raise ArgumentError.new('Wrong mode name') end end def ci_env_for(env_name) - value = nil - ci_list = KnapsackPro::Config::CI.constants - [:Base, :GitlabCI] - # load GitLab CI first to avoid edge case with order of loading envs for CI_NODE_INDEX - ci_list = [:GitlabCI] + ci_list - ci_list.each do |ci_name| - ci_class = Object.const_get("KnapsackPro::Config::CI::#{ci_name}") - ci = ci_class.new - value = ci.send(env_name) - break unless value.nil? + detected_ci.new.send(env_name) + end + + def detected_ci + detected = KnapsackPro::Config::CI.constants.map do |constant| + Object.const_get("KnapsackPro::Config::CI::#{constant}").new.detected end - value + .compact + .first + + detected || KnapsackPro::Config::CI::Base end def log_level LOG_LEVELS[ENV['KNAPSACK_PRO_LOG_LEVEL'].to_s.downcase] || ::Logger::DEBUG end