# File lib/hammer_cli/defaults.rb, line 11 def initialize(settings, file_path = nil) @defaults_settings = settings || {} @path = file_path || DEFAULT_FILE end
# File lib/hammer_cli/defaults.rb, line 30 def add_defaults_to_conf(default_options, provider) create_default_file if defaults_settings.empty? default_options.each do |key, value| key = switch_to_name(key).to_sym @defaults_settings.delete_if { |k,| defaults_match?(k, key) } @defaults_settings[key] = (value ? {:value => value.to_s} : {:provider => provider.to_s}) end update_defaults_file end
# File lib/hammer_cli/defaults.rb, line 40 def defaults_set?(param) defaults_settings.keys.any? { |k| defaults_match?(k, param) } end
# File lib/hammer_cli/defaults.rb, line 25 def delete_default_from_conf(param) @defaults_settings.delete_if { |k,| defaults_match?(k, param) } update_defaults_file end
# File lib/hammer_cli/defaults.rb, line 44 def get_defaults(opt) unless defaults_settings.nil? option_key = normalize_option(opt) settings_key = defaults_settings[option_key.to_sym].nil? ? option_key.gsub('_','-').to_sym : option_key.to_sym return nil if defaults_settings[settings_key].nil? if defaults_settings[settings_key][:provider] providers[defaults_settings[settings_key][:provider]].get_defaults(option_key.to_sym) else defaults_settings[settings_key][:value] end end end
# File lib/hammer_cli/defaults.rb, line 21 def providers @providers ||= {} end
# File lib/hammer_cli/defaults.rb, line 17 def register_provider(provider) providers[provider.provider_name.to_s] = provider end
# File lib/hammer_cli/defaults.rb, line 59 def write_to_file(defaults) File.open(path,'w') do |h| h.write defaults.to_yaml end end
# File lib/hammer_cli/defaults.rb, line 69 def create_default_file if Dir.exist?(File.dirname(@path)) new_file = File.new(path, "w") new_file.write ":defaults:" new_file.close else raise DefaultsPathError.new(_("Couldn't create %s. Please create the directory before setting defaults.") % path) end end
# File lib/hammer_cli/defaults.rb, line 79 def update_defaults_file conf_file_content = { :defaults => @defaults_settings } write_to_file(conf_file_content) conf_file_content end
# File lib/hammer_cli/defaults.rb, line 89 def defaults_match?(default_a, default_b) normalize_option(default_a) == normalize_option(default_b) end
# File lib/hammer_cli/defaults.rb, line 93 def normalize_option(opt) switch_to_name(opt).gsub(/^option_/,'').gsub('-','_') end
# File lib/hammer_cli/defaults.rb, line 97 def switch_to_name(opt) opt.to_s.gsub(/^-[-]?/,'') end