Class: EacCli::Definition::BaseOption

Inherits:
Object
  • Object
show all
Defined in:
lib/eac_cli/definition/base_option.rb,
lib/eac_cli/definition/base_option/initialize_args_parser.rb

Direct Known Subclasses

ArgumentOption, BooleanOption

Defined Under Namespace

Classes: InitializeArgsParser

Constant Summary collapse

DEFAULT_REQUIRED =
false

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_args(args) ⇒ Object



11
12
13
14
# File 'lib/eac_cli/definition/base_option.rb', line 11

def from_args(args)
  p = ::EacCli::Definition::BaseOption::InitializeArgsParser.new(args)
  new(p.short, p.long, p.description, p.options)
end

Instance Method Details

#default_valueObject



30
31
32
# File 'lib/eac_cli/definition/base_option.rb', line 30

def default_value
  default_value? ? options[OPTION_DEFAULT] : default_default_value
end

#default_value?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/eac_cli/definition/base_option.rb', line 34

def default_value?
  options.key?(OPTION_DEFAULT)
end

#identifierObject



38
39
40
41
42
43
44
# File 'lib/eac_cli/definition/base_option.rb', line 38

def identifier
  [long, short].each do |v|
    v.to_s.if_present { |vv| return vv.variableize.to_sym }
  end

  raise 'No short or long option to build identifier'
end

#repeat?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/eac_cli/definition/base_option.rb', line 46

def repeat?
  options[OPTION_REPEAT]
end

#required?Boolean

Returns:

  • (Boolean)


50
51
52
53
54
55
# File 'lib/eac_cli/definition/base_option.rb', line 50

def required?
  return true if options.key?(:required) && options.fetch(:required)
  return false if options.key?(:optional) && options.fetch(:optional)

  DEFAULT_REQUIRED
end

#show_on_usage?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/eac_cli/definition/base_option.rb', line 61

def show_on_usage?
  options[:usage]
end

#to_sObject



57
58
59
# File 'lib/eac_cli/definition/base_option.rb', line 57

def to_s
  "#{self.class.name.demodulize}[#{identifier}]"
end