module SimpleScripting::Configuration
Public Instance Methods
load(config_file: default_config_file, passwords_key: nil, required: [])
click to toggle source
`required`: list of strings. this currently support only keys outside a group; group names
are not considered keys.
# File lib/simple_scripting/configuration.rb, line 16 def load(config_file: default_config_file, passwords_key: nil, required: []) create_empty_file(config_file) if !File.exists?(config_file) configuration = ParseConfig.new(config_file) enforce_required_keys(configuration.params, required) convert_to_cool_format(OpenStruct.new, configuration.params, passwords_key) end
Private Instance Methods
convert_to_cool_format(result_node, configuration_node, encryption_key)
click to toggle source
Performs two conversions:
-
the configuration as a whole is converted to an OpenStruct
-
the values are converted to
SimpleScripting::Configuration::Value
# File lib/simple_scripting/configuration.rb, line 49 def convert_to_cool_format(result_node, configuration_node, encryption_key) configuration_node.each do |key, value| if value.is_a?(Hash) result_node[key] = OpenStruct.new convert_to_cool_format(result_node[key], value, encryption_key) else result_node[key] = Value.new(value, encryption_key) end end result_node end
create_empty_file(file)
click to toggle source
# File lib/simple_scripting/configuration.rb, line 28 def create_empty_file(file) FileUtils.touch(file) end
default_config_file()
click to toggle source
# File lib/simple_scripting/configuration.rb, line 32 def default_config_file base_config_filename = '.' + File.basename($PROGRAM_NAME).chomp('.rb') File.expand_path(base_config_filename, '~') end
enforce_required_keys(configuration, required)
click to toggle source
# File lib/simple_scripting/configuration.rb, line 38 def enforce_required_keys(configuration, required) missing_keys = required - configuration.select { |key, value| !value.is_a?(Hash) }.keys raise "Missing required configuration key(s): #{missing_keys.join(', ')}" if !missing_keys.empty? end