Class: PredictabilityEngine::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/predictability_engine/config.rb

Overview

Configuration management for the predictability engine.

Constant Summary collapse

CONFIG_FILE =
'.predictability_engine.yml'

Class Method Summary collapse

Class Method Details

.jira(profile_name = nil) ⇒ Object



21
22
23
# File 'lib/predictability_engine/config.rb', line 21

def self.jira(profile_name = nil)
  load_jira_config(profile_name)
end

.jira_client(profile = nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/predictability_engine/config.rb', line 25

def self.jira_client(profile = nil)
  require 'jira-ruby'
  instrument_jira_http! unless ::JIRA::HttpClient.ancestors.include?(JiraHttpLogger)
  config = jira(profile)
  validate_jira!(config)
  origin, derived_path = split_jira_site(config[:site])
  base = { site: origin, context_path: config[:context_path] || derived_path, default_headers: {} }
  auth = JiraAuth.build(config)
  options = auth.jira_options(base)
  options[:http_debug] = true if jira_http_debug?
  client = ::JIRA::Client.new(options)
  auth.post_init(client)
  client
end

.jira_credentials_fileObject



126
127
128
# File 'lib/predictability_engine/config.rb', line 126

def self.jira_credentials_file
  File.expand_path('~/.config/jira/jira_credentials.yml')
end

.load_yaml_file(path) ⇒ Object



138
139
140
141
142
# File 'lib/predictability_engine/config.rb', line 138

def self.load_yaml_file(path)
  YAML.load_file(path)
rescue Psych::SyntaxError => e
  raise Error, "Invalid YAML in #{path}: #{e.message}"
end

.validate_jira!(config) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/predictability_engine/config.rb', line 78

def self.validate_jira!(config)
  raise_missing(config, :site)
  case config[:auth_mode].to_s
  when 'bearer'
    raise_missing(config, :bearer_token)
  when 'cookie'
    raise_missing(config, :auth_cookie)
  when 'mfa_api'
    %i[email password totp_secret mfa_login_url].each { |k| raise_missing(config, k) }
  when 'mfa_browser'
    raise_missing(config, :idp_login_url)
  else
    raise_missing(config, :email)
    raise_missing(config, :token)
  end
end