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