Module: EverydayCliUtils::OptionUtil

Defined in:
lib/everyday-cli-utils/option.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



26
27
28
# File 'lib/everyday-cli-utils/option.rb', line 26

def options
  @options
end

#optsObject (readonly)

Returns the value of attribute opts.



26
27
28
# File 'lib/everyday-cli-utils/option.rb', line 26

def opts
  @opts
end

Instance Method Details

#default_options(opts = {}) ⇒ Object



69
70
71
# File 'lib/everyday-cli-utils/option.rb', line 69

def default_options(opts = {})
  opts.each { |opt| @options[opt[0]] = opt[1] }
end

#default_settings(settings = {}) ⇒ Object



65
66
67
# File 'lib/everyday-cli-utils/option.rb', line 65

def default_settings(settings = {})
  @default_settings = settings
end

#defaults_option(file_path, names, exit_on_save = true) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/everyday-cli-utils/option.rb', line 57

def defaults_option(file_path, names, exit_on_save = true)
  @opts          ||= OptionParser.new
  @set_defaults  = false
  @defaults_file = File.expand_path(file_path)
  @exit_on_save  = exit_on_save
  @opts.on(*names) { @set_defaults = true }
end

#option(opt_name, names, settings = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/everyday-cli-utils/option.rb', line 28

def option(opt_name, names, settings = {})
  @opts              ||= OptionParser.new
  @options           ||= {}
  @default_settings  ||= {}
  settings[:toggle]  = @default_settings[:toggle] unless settings.has_key?(:toggle) || !@default_settings.has_key?(:toggle)
  @options[opt_name] = false
  @opts.on(*names) {
    @options[opt_name] = !settings[:toggle] || !@options[opt_name]
    yield if block_given?
  }
end

#option_with_param(opt_name, names, settings = {}) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/everyday-cli-utils/option.rb', line 40

def option_with_param(opt_name, names, settings = {})
  @opts              ||= OptionParser.new
  @options           ||= {}
  @default_settings  ||= {}
  settings[:append]  = @default_settings[:append] unless settings.has_key?(:append) || !@default_settings.has_key?(:append)
  settings[:type]    = @default_settings[:type] unless settings.has_key?(:type) || !@default_settings.has_key?(:type)
  @options[opt_name] = settings[:append] ? [] : nil
  @opts.on(*names, settings[:type] || String) { |param|
    if settings[:append]
      @options[opt_name] << param
    else
      @options[opt_name] = param
    end
    yield if block_given?
  }
end

#parse!(argv = ARGV) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/everyday-cli-utils/option.rb', line 73

def parse!(argv = ARGV)
  default_options YAML::load_file(@defaults_file) unless @defaults_file.nil? || !File.exist?(@defaults_file)
  @opts.parse!(argv)
  if @set_defaults
    IO.write(@defaults_file, @options.to_yaml)
    if @exit_on_save
      puts 'Defaults set'
      exit 0
    end
  end
end