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



81
82
83
84
# File 'lib/everyday-cli-utils/option.rb', line 81

def banner(banner)
  @opts        ||= OptionParser.new
  @opts.banner = banner
end

#default_options(opts = {}) ⇒ Object



77
78
79
# File 'lib/everyday-cli-utils/option.rb', line 77

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

#default_settings(settings = {}) ⇒ Object



73
74
75
# File 'lib/everyday-cli-utils/option.rb', line 73

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

#defaults_option(file_path, names, settings = {}) ⇒ Object



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

def defaults_option(file_path, names, settings = {})
  @opts          ||= OptionParser.new
  @set_defaults  = false
  @defaults_file = File.expand_path(file_path)
  @exit_on_save  = !settings.has_key?(:exit_on_save) || settings[:exit_on_save]
  names << settings[:desc] if settings.has_key?(:desc)
  @opts.on(*names) { @set_defaults = true }
end

#helpObject



86
87
88
89
# File 'lib/everyday-cli-utils/option.rb', line 86

def help
  @opts ||= OptionParser.new
  @opts.help
end

#help_option(names, settings = {}) ⇒ Object



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

def help_option(names, settings = {})
  @opts          ||= OptionParser.new
  @display_help  = false
  @exit_on_print = !settings.has_key?(:exit_on_print) || settings[:exit_on_print]
  names << settings[:desc] if settings.has_key?(:desc)
  @opts.on(*names) { @display_help = true }
end

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



28
29
30
31
32
33
34
35
36
37
38
39
# 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)
  names << settings[:desc] if settings.has_key?(:desc)
  @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



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

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)
  names[0] << ' PARAM' unless names.any? { |v| v.include?(' ') }
  names << settings[:desc] if settings.has_key?(:desc)
  @options[opt_name] = settings[:append] ? [] : nil
  @opts.on(*names, settings[:type] || String) { |param|
    settings[:append] ? @options[opt_name] << param : @options[opt_name] = param
    yield if block_given?
  }
end

#parse!(argv = ARGV) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/everyday-cli-utils/option.rb', line 96

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

#to_sObject



91
92
93
94
# File 'lib/everyday-cli-utils/option.rb', line 91

def to_s
  @opts ||= OptionParser.new
  @opts.to_s
end