Class: EacCli::Definition

Inherits:
Object show all
Defined in:
lib/eac_cli/definition.rb,
lib/eac_cli/definition/alternative.rb,
lib/eac_cli/definition/base_option.rb,
lib/eac_cli/definition/boolean_option.rb,
lib/eac_cli/definition/help_formatter.rb,
lib/eac_cli/definition/argument_option.rb,
lib/eac_cli/definition/positional_argument.rb,
lib/eac_cli/definition/base_option/initialize_args_parser.rb

Defined Under Namespace

Classes: Alternative, ArgumentOption, BaseOption, BooleanOption, HelpFormatter, PositionalArgument

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.



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

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

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



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

def description
  @description
end

Instance Method Details

#alt(&block) ⇒ Object



23
24
25
26
27
28
# File 'lib/eac_cli/definition.rb', line 23

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

#alternative(key) ⇒ Object



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

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

#alternativesObject



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

def alternatives
  alternatives_set.values
end

#desc(description) ⇒ Object



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

def desc(description)
  self.description = description
end

#help_formatterObject



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

def help_formatter
  @help_formatter ||= ::EacCli::Definition::HelpFormatter.new(self)
end

#main_alternativeObject



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



54
55
56
# File 'lib/eac_cli/definition.rb', line 54

def options_arg(options_argument)
  self.options_argument = options_argument
end

#options_argumentObject



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

def options_argument
  main_alternative.options_argument?
end

#options_argument=(enable) ⇒ Object



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

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

#options_first(enable = true) ⇒ Object



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

def options_first(enable = true)
  @options_first = enable
end

#options_first?Boolean

Returns:

  • (Boolean)


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

def options_first?
  @options_first ? true : false
end

#subcommands?Boolean

Returns:

  • (Boolean)


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

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