Sha256: adae4309d36ec7a558c2f6da70b8ba445bfcf23a05ede4991393f8e2c46cddec
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
require_relative 'configuration/value' require 'fileutils' require 'ostruct' require 'parseconfig' module SimpleScripting module Configuration extend self # `required`: list of strings. this currently support only keys outside a group; group names # are not considered keys. # def load(config_file: default_config_file, passwords_key: nil, required: []) create_empty_file(config_file) if !File.exist?(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 def create_empty_file(file) FileUtils.touch(file) end def default_config_file base_config_filename = '.' + File.basename($PROGRAM_NAME).chomp('.rb') File.expand_path(base_config_filename, '~') end 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 # Performs two conversions: # # 1. the configuration as a whole is converted to an OpenStruct # 2. the values are converted to SimpleScripting::Configuration::Value # 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
simple_scripting-0.14.1 | lib/simple_scripting/configuration.rb |
simple_scripting-0.14.0 | lib/simple_scripting/configuration.rb |