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 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
defaults_set?(param) click to toggle source
# File lib/hammer_cli/defaults.rb, line 40
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)
  @defaults_settings.delete_if { |k,| defaults_match?(k, param) }
  update_defaults_file
end
get_defaults(opt) click to toggle source
# 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
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 59
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 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
update_defaults_file() click to toggle source
# 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

Private Instance Methods

defaults_match?(default_a, default_b) click to toggle source
# File lib/hammer_cli/defaults.rb, line 89
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 93
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 97
def switch_to_name(opt)
  opt.to_s.gsub(/^-[-]?/,'')
end