Class: EacCli::Definition::Alternative
- Defined in:
- lib/eac_cli/definition/alternative.rb
Constant Summary collapse
- ANY_OPTION_DESCRIPTION =
'ANY_OPTION'- ANY_OPTION_LONG =
'__'- ANY_OPTION_SHORT =
'_'- SUBCOMMAND_NAME_ARG =
:subcommand- SUBCOMMAND_ARGS_ARG =
:subcommand_args
Instance Method Summary collapse
- #any_opt ⇒ Boolean
- #any_option? ⇒ Boolean
- #any_options_option ⇒ EacCli::Definition::BooleanOption
- #arg_opt(*args) ⇒ Object
- #bool_opt(*args) ⇒ Object
- #options ⇒ Object
- #options_argument(enable) ⇒ Object
- #options_argument? ⇒ Boolean
- #pos_arg(name, arg_options = {}) ⇒ Object
- #positional ⇒ Object
- #positional_arguments_blocked_reason(new_pos_arg) ⇒ Object
- #subcommands ⇒ Object
- #subcommands? ⇒ Boolean
Instance Method Details
#any_opt ⇒ Boolean
13 14 15 |
# File 'lib/eac_cli/definition/alternative.rb', line 13 def any_opt @any_opt = true end |
#any_option? ⇒ Boolean
18 19 20 |
# File 'lib/eac_cli/definition/alternative.rb', line 18 def any_option? @any_opt ? true : false end |
#any_options_option ⇒ EacCli::Definition::BooleanOption
23 24 25 26 27 28 |
# File 'lib/eac_cli/definition/alternative.rb', line 23 def ||= ::EacCli::Definition::BooleanOption.new( ANY_OPTION_SHORT, ANY_OPTION_LONG, ANY_OPTION_DESCRIPTION, optional: true, repeat: true, usage: false ) end |
#arg_opt(*args) ⇒ Object
30 31 32 |
# File 'lib/eac_cli/definition/alternative.rb', line 30 def arg_opt(*args) << ::EacCli::Definition::ArgumentOption.from_args(args) end |
#bool_opt(*args) ⇒ Object
34 35 36 |
# File 'lib/eac_cli/definition/alternative.rb', line 34 def bool_opt(*args) << ::EacCli::Definition::BooleanOption.from_args(args) end |
#options ⇒ Object
38 39 40 |
# File 'lib/eac_cli/definition/alternative.rb', line 38 def .to_a end |
#options_argument(enable) ⇒ Object
46 47 48 49 50 |
# File 'lib/eac_cli/definition/alternative.rb', line 46 def (enable) = enable self end |
#options_argument? ⇒ Boolean
42 43 44 |
# File 'lib/eac_cli/definition/alternative.rb', line 42 def ? true : false end |
#pos_arg(name, arg_options = {}) ⇒ Object
52 53 54 55 56 |
# File 'lib/eac_cli/definition/alternative.rb', line 52 def pos_arg(name, = {}) new_pos_arg = ::EacCli::Definition::Positional.new(name, ) check_positional_blocked(new_pos_arg) pos_set << new_pos_arg end |
#positional ⇒ Object
58 59 60 |
# File 'lib/eac_cli/definition/alternative.rb', line 58 def positional pos_set.to_a end |
#positional_arguments_blocked_reason(new_pos_arg) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/eac_cli/definition/alternative.rb', line 62 def positional_arguments_blocked_reason(new_pos_arg) last = pos_set.last return nil unless last return 'there are subcommands' if subcommands? return 'last argument repeats' if last.repeat? return 'new argument is required and last is optional' if last.optional? && new_pos_arg.if_present(&:required?) nil end |
#subcommands ⇒ Object
73 74 75 76 77 |
# File 'lib/eac_cli/definition/alternative.rb', line 73 def subcommands pos_arg(SUBCOMMAND_NAME_ARG, subcommand: true) pos_set << ::EacCli::Definition::Positional.new(SUBCOMMAND_ARGS_ARG, optional: true, repeat: true) end |
#subcommands? ⇒ Boolean
79 80 81 |
# File 'lib/eac_cli/definition/alternative.rb', line 79 def subcommands? pos_set.any?(&:subcommand?) end |