class KnapsackPro::Config::Env

Constants

LOG_LEVELS

Public Class Methods

branch() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 44
def branch
  env_for('KNAPSACK_PRO_BRANCH', :branch)
end
branch_encrypted() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 134
def branch_encrypted
  ENV['KNAPSACK_PRO_BRANCH_ENCRYPTED']
end
branch_encrypted?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 138
def branch_encrypted?
  branch_encrypted == 'true'
end
ci?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 282
def ci?
  ENV.fetch('CI', 'false').downcase == 'true' ||
    detected_ci != KnapsackPro::Config::CI::Base
end
ci_node_build_id() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 23
def ci_node_build_id
  env_name = 'KNAPSACK_PRO_CI_NODE_BUILD_ID'
  env_for(env_name, :node_build_id) ||
    raise("Missing environment variable #{env_name}. Read more at #{KnapsackPro::Urls::KNAPSACK_PRO_CI_NODE_BUILD_ID}")
end
ci_node_index() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 19
def ci_node_index
  (env_for('KNAPSACK_PRO_CI_NODE_INDEX', :node_index) || 0).to_i
end
ci_node_retry_count() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 29
def ci_node_retry_count
  (env_for('KNAPSACK_PRO_CI_NODE_RETRY_COUNT', :node_retry_count) || 0).to_i
end
ci_node_total() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 15
def ci_node_total
  (env_for('KNAPSACK_PRO_CI_NODE_TOTAL', :node_total) || 1).to_i
end
ci_provider() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 262
def ci_provider
  detected_ci.new.ci_provider
end
commit_hash() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 40
def commit_hash
  env_for('KNAPSACK_PRO_COMMIT_HASH', :commit_hash)
end
cucumber_queue_prefix() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 187
def cucumber_queue_prefix
  ENV.fetch('KNAPSACK_PRO_CUCUMBER_QUEUE_PREFIX', 'bundle exec')
end
detected_ci() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 252
def detected_ci
  detected = KnapsackPro::Config::CI.constants.map do |constant|
    Object.const_get("KnapsackPro::Config::CI::#{constant}").new.detected
  end
    .compact
    .first

  detected || KnapsackPro::Config::CI::Base
end
endpoint() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 146
def endpoint
  env_name = 'KNAPSACK_PRO_ENDPOINT'
  return ENV[env_name] if ENV[env_name]

  case mode
  when :development
    'http://api.knapsackpro.test:3000'
  when :test
    'https://api-staging.knapsackpro.com'
  when :production
    'https://api.knapsackpro.com'
  else
    required_env(env_name)
  end
end
fallback_mode_enabled() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 118
def fallback_mode_enabled
  ENV.fetch('KNAPSACK_PRO_FALLBACK_MODE_ENABLED', true)
end
fallback_mode_enabled?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 122
def fallback_mode_enabled?
  fallback_mode_enabled.to_s == 'true'
end
fallback_mode_error_exit_code() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 287
def fallback_mode_error_exit_code
  ENV.fetch('KNAPSACK_PRO_FALLBACK_MODE_ERROR_EXIT_CODE', 1).to_i
end
fixed_queue_split() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 170
def fixed_queue_split
  @fixed_queue_split ||= begin
    env_name = 'KNAPSACK_PRO_FIXED_QUEUE_SPLIT'
    computed = env_for(env_name, :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
fixed_queue_split?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 183
def fixed_queue_split?
  fixed_queue_split.to_s == 'true'
end
fixed_test_suite_split() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 162
def fixed_test_suite_split
  ENV.fetch('KNAPSACK_PRO_FIXED_TEST_SUITE_SPLIT', true)
end
fixed_test_suite_split?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 166
def fixed_test_suite_split?
  fixed_test_suite_split.to_s == 'true'
end
log_dir() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 270
def log_dir
  ENV['KNAPSACK_PRO_LOG_DIR']
end
log_level() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 266
def log_level
  LOG_LEVELS[ENV['KNAPSACK_PRO_LOG_LEVEL'].to_s.downcase] || ::Logger::INFO
end
masked_user_seat() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 56
def masked_user_seat
  return unless user_seat

  KnapsackPro::MaskString.call(user_seat)
end
max_request_retries() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 33
def max_request_retries
  number = ENV['KNAPSACK_PRO_MAX_REQUEST_RETRIES']
  if number
    number.to_i
  end
end
mode() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 241
def mode
  mode = ENV['KNAPSACK_PRO_MODE']
  return :production if mode.nil?
  mode = mode.to_sym
  if [:development, :test, :production].include?(mode)
    mode
  else
    raise ArgumentError.new('Wrong mode name')
  end
end
project_dir() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 48
def project_dir
  env_for('KNAPSACK_PRO_PROJECT_DIR', :project_dir)
end
queue_id() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 110
def queue_id
  ENV['KNAPSACK_PRO_QUEUE_ID'] || raise('Missing Queue ID')
end
queue_recording_enabled() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 102
def queue_recording_enabled
  ENV['KNAPSACK_PRO_QUEUE_RECORDING_ENABLED']
end
queue_recording_enabled?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 106
def queue_recording_enabled?
  queue_recording_enabled == 'true'
end
recording_enabled() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 90
def recording_enabled
  ENV['KNAPSACK_PRO_RECORDING_ENABLED']
end
recording_enabled?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 94
def recording_enabled?
  recording_enabled == 'true'
end
regular_mode?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 98
def regular_mode?
  recording_enabled?
end
repository_adapter() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 86
def repository_adapter
  ENV['KNAPSACK_PRO_REPOSITORY_ADAPTER']
end
rspec_split_by_test_examples?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 191
def rspec_split_by_test_examples?
  return @rspec_split_by_test_examples if defined?(@rspec_split_by_test_examples)

  split = ENV.fetch('KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES', false).to_s == 'true'

  if split && ci_node_total < 2
    KnapsackPro.logger.debug('Skipping split of test files by test examples because you are running tests on a single CI node (no parallelism)')
    @rspec_split_by_test_examples = false
  else
    @rspec_split_by_test_examples = split
  end
end
rspec_test_example_detector_prefix() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 204
def rspec_test_example_detector_prefix
  ENV.fetch('KNAPSACK_PRO_RSPEC_TEST_EXAMPLE_DETECTOR_PREFIX', 'bundle exec')
end
salt() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 142
def salt
  required_env('KNAPSACK_PRO_SALT')
end
set_test_runner_adapter(adapter_class) click to toggle source
# File lib/knapsack_pro/config/env.rb, line 278
def set_test_runner_adapter(adapter_class)
  ENV['KNAPSACK_PRO_TEST_RUNNER_ADAPTER'] = adapter_class.to_s.split('::').last
end
slow_test_file_pattern() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 66
def slow_test_file_pattern
  ENV['KNAPSACK_PRO_SLOW_TEST_FILE_PATTERN']
end
slow_test_file_threshold() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 208
def slow_test_file_threshold
  ENV.fetch('KNAPSACK_PRO_SLOW_TEST_FILE_THRESHOLD', nil)&.to_f
end
slow_test_file_threshold?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 212
def slow_test_file_threshold?
  !!slow_test_file_threshold
end
subset_queue_id() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 114
def subset_queue_id
  ENV['KNAPSACK_PRO_SUBSET_QUEUE_ID'] || raise('Missing Subset Queue ID')
end
test_dir() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 82
def test_dir
  ENV['KNAPSACK_PRO_TEST_DIR']
end
test_file_exclude_pattern() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 70
def test_file_exclude_pattern
  ENV['KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN']
end
test_file_list() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 74
def test_file_list
  ENV['KNAPSACK_PRO_TEST_FILE_LIST']
end
test_file_list_source_file() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 78
def test_file_list_source_file
  ENV['KNAPSACK_PRO_TEST_FILE_LIST_SOURCE_FILE']
end
test_file_pattern() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 62
def test_file_pattern
  ENV['KNAPSACK_PRO_TEST_FILE_PATTERN']
end
test_files_encrypted() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 126
def test_files_encrypted
  ENV['KNAPSACK_PRO_TEST_FILES_ENCRYPTED']
end
test_files_encrypted?() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 130
def test_files_encrypted?
  test_files_encrypted == 'true'
end
test_runner_adapter() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 274
def test_runner_adapter
  ENV['KNAPSACK_PRO_TEST_RUNNER_ADAPTER']
end
test_suite_token() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 216
def test_suite_token
  env_name = 'KNAPSACK_PRO_TEST_SUITE_TOKEN'
  ENV[env_name] || raise("Missing environment variable #{env_name}. You should set environment variable like #{env_name}_RSPEC (note there is suffix _RSPEC at the end). knapsack_pro gem will set #{env_name} based on #{env_name}_RSPEC value. If you use other test runner than RSpec then use proper suffix.")
end
test_suite_token_cucumber() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 233
def test_suite_token_cucumber
  ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER']
end
test_suite_token_minitest() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 225
def test_suite_token_minitest
  ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST']
end
test_suite_token_rspec() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 221
def test_suite_token_rspec
  ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC']
end
test_suite_token_spinach() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 237
def test_suite_token_spinach
  ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH']
end
test_suite_token_test_unit() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 229
def test_suite_token_test_unit
  ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_TEST_UNIT']
end
user_seat() click to toggle source
# File lib/knapsack_pro/config/env.rb, line 52
def user_seat
  env_for('KNAPSACK_PRO_USER_SEAT', :user_seat)
end

Private Class Methods

ci_env_for(env_name) click to toggle source
# File lib/knapsack_pro/config/env.rb, line 308
def ci_env_for(env_name)
  detected_ci.new.send(env_name)
end
env_for(knapsack_env_name, ci_env_method) click to toggle source
# File lib/knapsack_pro/config/env.rb, line 297
def env_for(knapsack_env_name, ci_env_method)
  knapsack_env_value = ENV[knapsack_env_name]
  ci_env_value = ci_env_for(ci_env_method)

  if !knapsack_env_value.nil? && !ci_env_value.nil? && knapsack_env_value != ci_env_value.to_s
    KnapsackPro.logger.info("You have set the environment variable #{knapsack_env_name} to #{knapsack_env_value} which could be automatically determined from the CI environment as #{ci_env_value}.")
  end

  knapsack_env_value != nil ? knapsack_env_value : ci_env_value
end
required_env(env_name) click to toggle source
# File lib/knapsack_pro/config/env.rb, line 293
def required_env(env_name)
  ENV[env_name] || raise("Missing environment variable #{env_name}")
end