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.



19
20
21
22
# File 'lib/eac_cli/definition.rb', line 19

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

Instance Attribute Details

#descriptionString?

Returns:

  • (String, nil)


17
18
19
# File 'lib/eac_cli/definition.rb', line 17

def description
  @description
end

Instance Method Details

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



25
26
27
28
29
30
31
32
33
34
# File 'lib/eac_cli/definition.rb', line 25

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.



43
44
45
# File 'lib/eac_cli/definition.rb', line 43

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

#alternativesEnumerable<EacCli::Definition::Alternative>

Returns:



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

def alternatives
  alternatives_set.values
end

#desc(description) ⇒ Object

Same as #description=.



48
49
50
# File 'lib/eac_cli/definition.rb', line 48

def desc(description)
  self.description = description
end

#main_alternativeEacCli::Definition::Alternative



53
54
55
56
57
58
59
# File 'lib/eac_cli/definition.rb', line 53

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)


63
64
65
# File 'lib/eac_cli/definition.rb', line 63

def options_arg(options_argument)
  self.options_argument = options_argument
end

#options_argumentBoolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/eac_cli/definition.rb', line 68

def options_argument
  main_alternative.options_argument?
end

#options_argument=(enable) ⇒ Object



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

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

#options_first(enable = true) ⇒ Object

rubocop:disable Style/OptionalBooleanParameter



83
84
85
# File 'lib/eac_cli/definition.rb', line 83

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

#options_first?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/eac_cli/definition.rb', line 87

def options_first?
  @options_first ? true : false
end

#subcommands?Boolean

Returns:

  • (Boolean)


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

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