Class: Bricolage::Parameters::CommandLineOptionHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/bricolage/parameters.rb

Overview

Handles param values given by command line options (e.g. –dest-table=t). Declarations + option_args -> IntermediateValues

Instance Method Summary collapse

Constructor Details

#initialize(decls) ⇒ CommandLineOptionHandler

Returns a new instance of CommandLineOptionHandler.



107
108
109
110
111
# File 'lib/bricolage/parameters.rb', line 107

def initialize(decls)
  @decls = decls   # Declarations
  @values = {}     # {name => a}
  @vars = Variables.new
end

Instance Method Details

#define_options(parser) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/bricolage/parameters.rb', line 113

def define_options(parser)
  @decls.each do |decl|
    desc = (decl.optional? ? '[optional] ' : '') + decl.description
    arg_spec = decl.have_arg? ? "=#{decl.arg_spec}" : ''
    parser.on("--#{decl.option_name}#{arg_spec}", desc) {|arg|
      @values[decl.name] = decl.parse_option_value(arg, @values[decl.name])
    }
  end
  parser.on('-v', '--variable=NAME=VALUE', 'Set variable.') {|name_value|
    name, value = name_value.split('=', 2)
    @vars.add Variable.new(name, value)
  }
end

#valuesObject



127
128
129
# File 'lib/bricolage/parameters.rb', line 127

def values
  IntermediateValues.new(@decls, @values, @vars)
end