class HammerCLI::Defaults
Attributes
defaults_settings[R]
path[R]
Public Class Methods
new(settings, file_path = nil)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 11 def initialize(settings, file_path = nil) @defaults_settings = settings || {} @path = file_path || DEFAULT_FILE end
Public Instance Methods
add_defaults_to_conf(default_options, provider)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 31 def add_defaults_to_conf(default_options, provider) create_default_file if defaults_settings.empty? update_defaults_file do |defaults| default_options.each do |key, value| key = switch_to_name(key).to_sym defaults.delete_if { |k,| defaults_match?(k, key) } defaults[key] = (value ? {:value => value} : {:provider => provider}) end end end
defaults_set?(param)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 42 def defaults_set?(param) defaults_settings.keys.any? { |k| defaults_match?(k, param) } end
delete_default_from_conf(param)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 25 def delete_default_from_conf(param) update_defaults_file do |defaults| defaults.delete_if { |k,| defaults_match?(k, param) } end end
get_defaults(opt)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 46 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
providers()
click to toggle source
# File lib/hammer_cli/defaults.rb, line 21 def providers @providers ||= {} end
register_provider(provider)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 17 def register_provider(provider) providers[provider.provider_name.to_s] = provider end
write_to_file(defaults)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 61 def write_to_file(defaults) File.open(path,'w') do |h| h.write defaults.to_yaml end end
Protected Instance Methods
create_default_file()
click to toggle source
# File lib/hammer_cli/defaults.rb, line 71 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
update_defaults_file() { |conf_file| ... }
click to toggle source
# File lib/hammer_cli/defaults.rb, line 81 def update_defaults_file conf_file = YAML.load_file(@path) conf_file[:defaults] ||= {} yield conf_file[:defaults] write_to_file conf_file conf_file end
Private Instance Methods
defaults_match?(default_a, default_b)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 91 def defaults_match?(default_a, default_b) normalize_option(default_a) == normalize_option(default_b) end
normalize_option(opt)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 95 def normalize_option(opt) switch_to_name(opt).gsub(/^option_/,'').gsub('-','_') end
switch_to_name(opt)
click to toggle source
# File lib/hammer_cli/defaults.rb, line 99 def switch_to_name(opt) opt.to_s.gsub(/^-[-]?/,'') end