Class: EacCli::Definition

Inherits:
Object show all
Defined in:
lib/eac_cli/definition.rb,
lib/eac_cli/definition/error.rb,
lib/eac_cli/definition/option.rb,
lib/eac_cli/definition/positional.rb,
lib/eac_cli/definition/alternative.rb,
lib/eac_cli/definition/boolean_option.rb,
lib/eac_cli/definition/argument_option.rb,
lib/eac_cli/definition/option_or_positional.rb,
lib/eac_cli/definition/option/initialize_args_parser.rb

Defined Under Namespace

Classes: Alternative, ArgumentOption, BooleanOption, Error, Option, OptionOrPositional, Positional

Constant Summary collapse

MAIN_ALTERNATIVE_KEY =
:main
SUBCOMMAND_NAME_ARG =
'subcommand'
SUBCOMMAND_ARGS_ARG =
'subcommand_args'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDefinition

Returns a new instance of Definition.



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

def initialize
  self.description = '-- NO DESCRIPTION SET --'
  alternatives_set[MAIN_ALTERNATIVE_KEY] = main_alternative
end

Instance Attribute Details

#descriptionString?

Returns:

  • (String, nil)


10
11
12
# File 'lib/eac_cli/definition.rb', line 10

def description
  @description
end

Instance Method Details

#alt(key = nil, &block) ⇒ EacCli::Definition::Alternative



18
19
20
21
22
23
24
25
26
27
# File 'lib/eac_cli/definition.rb', line 18

def alt(key = nil, &block)
  key ||= new_alternative_key
  raise(::EacCli::Definition::Error, "A alternative with key=\"#{key}\" already exists") if
    key.present? && alternatives_set.key?(key)

  r = ::EacCli::Definition::Alternative.new
  r.instance_eval(&block)
  alternatives_set[key] = r
  r
end

#alternative(key) ⇒ EacCli::Definition::Alternative

Returns:

Raises:

  • (KeyError)

    If there is not a alternative with provided key.



36
37
38
# File 'lib/eac_cli/definition.rb', line 36

def alternative(key)
  alternatives_set.fetch(key)
end

#alternativesEnumerable<EacCli::Definition::Alternative>

Returns:



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

def alternatives
  alternatives_set.values
end

#desc(description) ⇒ Object

Same as #description=.



41
42
43
# File 'lib/eac_cli/definition.rb', line 41

def desc(description)
  self.description = description
end

#main_alternativeEacCli::Definition::Alternative



46
47
48
49
50
51
52
# File 'lib/eac_cli/definition.rb', line 46

def main_alternative
  @main_alternative ||= begin
    r = ::EacCli::Definition::Alternative.new
    r.options_argument(true)
    r
  end
end

#options_arg(options_argument) ⇒ Object

Parameters:

  • options_argument (Boolean)


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

def options_arg(options_argument)
  self.options_argument = options_argument
end

#options_argumentBoolean

Returns:

  • (Boolean)


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

def options_argument # rubocop:disable Naming/PredicateMethod
  main_alternative.options_argument?
end

#options_argument=(enable) ⇒ Object



65
66
67
# File 'lib/eac_cli/definition.rb', line 65

def options_argument=(enable)
  main_alternative.options_argument(enable)
end

#options_first(enable = true) ⇒ Object

rubocop:disable Style/OptionalBooleanParameter



76
77
78
# File 'lib/eac_cli/definition.rb', line 76

def options_first(enable = true) # rubocop:disable Style/OptionalBooleanParameter
  @options_first = enable
end

#options_first?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/eac_cli/definition.rb', line 80

def options_first?
  @options_first ? true : false
end

#subcommands?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/eac_cli/definition.rb', line 72

def subcommands?
  alternatives.any?(&:subcommands?)
end