module CommandKit::Options
Provides a thin DSL for defining options as attributes.
## Examples
include CommandKit::Options option :foo, short: '-f', value: {type: String}, desc: "Foo option" option :bar, short: '-b', value: { type: String, usage: 'STR:STR:...' }, desc: "Bar option" do |arg| @bar = arg.split(':') end
### initialize and using instance variables
option :number, value: {type: Integer}, desc: 'Numbers' do |num| @numbers << num end def initialize(**kwargs) super(**kwargs) @numbers = [] end
Attributes
options[R]
Hash of parsed option values.
@return [Hash{Symbol => Object}]
@api semipublic
Public Class Methods
new(options: {}, **kwargs)
click to toggle source
Initializes {#options} and populates the {Parser#option_parser option parser}.
@param [Hash{Symbol => Object}] options
Optional prepopulated options hash.
@note
The {#option_parser} will populate {#options} and also call any {ClassMethods#option option} blocks with the parsed option values.
@api public
Calls superclass method
CommandKit::Options::Parser::new
# File lib/command_kit/options.rb, line 208 def initialize(options: {}, **kwargs) @options = options super(**kwargs) self.class.options.each_value do |option| option_parser.on(*option.usage,option.type,option.desc) do |arg,*captures| @options[option.name] = if arg.nil? option.default_value else arg end if option.block instance_exec(*arg,*captures,&option.block) end end end end