Class: EacCli::Definition::Alternative

Inherits:
Object
  • Object
show all
Defined in:
lib/eac_cli/definition/alternative.rb

Constant Summary collapse

SUBCOMMAND_NAME_ARG =
:subcommand
SUBCOMMAND_ARGS_ARG =
:subcommand_args

Instance Method Summary collapse

Instance Method Details

#arg_opt(*args) ⇒ Object



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

def arg_opt(*args)
  options_set << ::EacCli::Definition::ArgumentOption.from_args(args)
end

#bool_opt(*args) ⇒ Object



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

def bool_opt(*args)
  options_set << ::EacCli::Definition::BooleanOption.from_args(args)
end

#optionsObject



21
22
23
# File 'lib/eac_cli/definition/alternative.rb', line 21

def options
  options_set.to_a
end

#options_argument(enable) ⇒ Object



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

def options_argument(enable)
  @options_argument = enable

  self
end

#options_argument?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/eac_cli/definition/alternative.rb', line 25

def options_argument?
  @options_argument ? true : false
end

#pos_arg(name, arg_options = {}) ⇒ Object



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

def pos_arg(name, arg_options = {})
  new_pos_arg = ::EacCli::Definition::PositionalArgument.new(name, arg_options)
  check_positional_blocked(new_pos_arg)
  pos_set << new_pos_arg
end

#positionalObject



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

def positional
  pos_set.to_a
end

#positional_arguments_blocked?(new_pos_arg) ⇒ Boolean

Returns:

  • (Boolean)


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

def positional_arguments_blocked?(new_pos_arg)
  last = pos_set.last
  return false unless last
  return true if subcommands?
  return true if last.repeat?
  return true if last.optional? && new_pos_arg.if_present(&:required?)

  false
end

#subcommandsObject



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

def subcommands
  pos_arg(SUBCOMMAND_NAME_ARG, subcommand: true)
  pos_set << ::EacCli::Definition::PositionalArgument.new(SUBCOMMAND_ARGS_ARG,
                                                          optional: true, repeat: true)
end

#subcommands?Boolean

Returns:

  • (Boolean)


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

def subcommands?
  pos_set.any?(&:subcommand?)
end