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