class ProbeDockProbe::Config
Attributes
load_warnings[R]
local_mode[W]
print_payload[W]
project[R]
publish[W]
save_payload[W]
server[R]
workspace[R]
Public Class Methods
new()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 10 def initialize @servers = [] @server = Server.new @project = Project.new @publish, @local_mode, @print_payload, @save_payload = false, false, false, false @load_warnings = [] end
Public Instance Methods
client_options()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 30 def client_options { publish: @publish, local_mode: @local_mode, workspace: @workspace, print_payload: @print_payload, save_payload: @save_payload }.select{ |k,v| !v.nil? } end
load!() { |self| ... }
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 40 def load! @server.clear @servers.clear @load_warnings = [] config = load_config_files @publish = parse_env_flag :publish, config.fetch(:publish, true) @server_name = parse_env_option(:server) || config[:server] @local_mode = parse_env_flag(:local) || !!config[:local] self.workspace = parse_env_option(:workspace) || config[:workspace] @print_payload = parse_env_flag :print_payload, !!config[:payload][:print] @save_payload = parse_env_flag :save_payload, !!config[:payload][:save] @servers, server = build_servers config if server @server = server else @server.name = @server_name end { api_url: parse_env_option(:server_api_url), api_token: parse_env_option(:server_api_token), project_api_id: parse_env_option(:server_project_api_id) }.each{ |k,v| @server.send "#{k}=", v if v } project_options = config[:project] project_options.merge! api_id: @server.project_api_id if @server and @server.project_api_id @project.update project_options yield self if block_given? check! @load_warnings.each{ |w| warn Paint["Probe Dock - #{w}", :yellow] } self end
servers()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 22 def servers @servers.dup end
workspace=(dir)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 18 def workspace= dir @workspace = dir ? File.expand_path(dir) : nil end
Private Instance Methods
build_servers(config)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 100 def build_servers config default_server_options = { project_api_id: config[:project][:api_id] } servers = config[:servers].inject({}) do |memo,(name, options)| memo[name] = Server.new default_server_options.merge(options).merge(name: name) memo end [ servers.values, servers[@server_name.to_s.strip] ] end
check!()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 84 def check! configs = [ home_config_file, working_config_file ] actual_configs = configs.select{ |f| File.exists? f } if actual_configs.empty? @load_warnings << %|no config file found, looking for:\n #{configs.join "\n "}| end if @servers.empty? @load_warnings << "No server defined" elsif !@server_name && !@server.name @load_warnings << "No server name given" end end
home_config_file()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 137 def home_config_file File.join File.expand_path('~'), '.probedock', 'config.yml' end
load_config_files()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 111 def load_config_files configs = [ home_config_file, working_config_file ] actual_configs = configs.select{ |f| File.exists? f } return { servers: [], payload: {}, project: {} } if actual_configs.empty? actual_configs.collect!{ |f| YAML.load_file f } actual_configs.inject({ servers: {} }) do |memo,yml| memo.merge! parse_general_options(yml) if yml['servers'].kind_of? Hash yml['servers'].each_pair do |k,v| if v.kind_of? Hash memo[:servers][k] = (memo[:servers][k] || {}).merge(parse_server_options(v)) end end end memo[:payload] = (memo[:payload] || {}).merge parse_payload_options(yml['payload']) memo[:project] = (memo[:project] || {}).merge parse_project_options(yml['project']) memo end end
parse_env_flag(name, default = false)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 145 def parse_env_flag name, default = false val = parse_env_option name val ? !!val.to_s.strip.match(/\A(1|y|yes|t|true)\Z/i) : default end
parse_env_option(name)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 150 def parse_env_option name var = "PROBEDOCK_#{name.to_s.upcase}" return ENV[var] if ENV.key? var old_var = "PROBE_DOCK_#{name.to_s.upcase}" ENV.key?(old_var) ? ENV[old_var] : nil end
parse_general_options(h)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 159 def parse_general_options h parse_options h, %w(publish server local workspace) end
parse_options(h, keys)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 175 def parse_options h, keys return {} unless h.kind_of? Hash keys.inject({}){ |memo,k| memo[k.gsub(/(.)([A-Z])/, '\1_\2').downcase.to_sym] = h[k] if h.key?(k); memo } end
parse_payload_options(h)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 167 def parse_payload_options h parse_options h, %w(save print) end
parse_project_options(h)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 171 def parse_project_options h parse_options h, %w(version apiId category tags tickets) end
parse_server_options(h)
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 163 def parse_server_options h parse_options h, %w(name apiUrl apiToken apiVersion projectApiId) end
working_config_file()
click to toggle source
# File lib/probe_dock_ruby/config.rb, line 141 def working_config_file File.expand_path parse_env_option(:config) || 'probedock.yml', Dir.pwd end