module QuiversTaskrunner::SettingsHelper
Public Instance Methods
deserialize_string_key_value_pair(string_key_value_pair)
click to toggle source
# File lib/quiverstaskrunner/helpers/settingshelper.rb, line 75 def deserialize_string_key_value_pair(string_key_value_pair) if (defined? string_key_value_pair) && (string_key_value_pair.is_a?(Array)) && (!string_key_value_pair.empty?) && (string_key_value_pair.length > 1) key = string_key_value_pair[0] .gsub("__", "-") .gsub("___", ".") value = string_key_value_pair[1].gsub(@@escape_hash_connector, "=>") if (defined? value) && (!value.nil?) && (!value.empty?) deserialize_value = if (value.index("[") == 0) || (value.index("{") == 0) # this is an array or a hash eval(value) else value end return [key, deserialize_value] else return string_key_value_pair end else return string_key_value_pair end end
get_cli_settings(options={})
click to toggle source
# File lib/quiverstaskrunner/helpers/settingshelper.rb, line 45 def get_cli_settings(options={}) # Returns a Hash verbose = (defined? ARGV) && (!ARGV.nil?) && (!ARGV.empty?) && (ARGV.detect { |x| x == "-v" }) if verbose puts "ARGV:".colorize(:yellow) puts ARGV end separator = options[:sep] || "=" ignore_keys = options[:cli_params_black_list] if defined? ARGV && !ARGV.empty? ignore_keys_exist = (defined? ignore_keys) && (!ignore_keys.nil?) && (ignore_keys.is_a?(Array)) && (!ignore_keys.empty?) filtered_args = if (ignore_keys_exist) formatted_ignore_keys = ignore_keys.map { |x| "#{x}#{separator}" } ARGV.slice(1..-1).reject { |arg| arg.index(separator).nil? || formatted_ignore_keys.detect { |x| arg.index(x) == 0 } } else ARGV.slice(1..-1).reject { |arg| arg.index(separator).nil? } end if verbose puts "Filtered ARGV:".colorize(:yellow) puts filtered_args end return Hash[*filtered_args.map { |arg| SettingsHelper.deserialize_string_key_value_pair(arg.gsub("=>", @@escape_hash_connector).split(separator)) }.flatten] else return {} end end
get_settings(filepath, env={}, options={})
click to toggle source
# File lib/quiverstaskrunner/helpers/settingshelper.rb, line 13 def get_settings(filepath, env={}, options={}) verbose = (defined? ARGV) && (!ARGV.nil?) && (!ARGV.empty?) && (ARGV.detect { |x| x == "-v" }) environment = env.is_a?(Hash) ? "defaults" : env file_contents = open(filepath).read YAML.load(ERB.new(file_contents).result).to_hash all_settings = YAML.load(ERB.new(file_contents).result).to_hash settings = all_settings[environment] if verbose puts "settings for the '#{filepath}' file and the '#{environment}' environment:".colorize(:yellow) puts CliHelper.pretty_print(settings) end injected_settings = SettingsHelper.get_cli_settings(options) if verbose puts "Injected settings from the CLI:".colorize(:yellow) puts CliHelper.pretty_print(injected_settings) end final_settings = if !injected_settings.empty? Hash[*settings.map { |k,v| (injected_settings.has_key?(k) ? [k, injected_settings[k]] : [k, v]) }.flatten ] else settings end if verbose puts "Final settings:".colorize(:yellow) puts CliHelper.pretty_print(final_settings) end return final_settings end