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
17 18 19 |
# File 'lib/eac_cli/definition/alternative.rb', line 17 def any_opt @any_opt = true end |
#any_option? ⇒ Boolean
22 23 24 |
# File 'lib/eac_cli/definition/alternative.rb', line 22 def any_option? @any_opt ? true : false end |
#any_options_option ⇒ EacCli::Definition::BooleanOption
27 28 29 30 31 32 |
# File 'lib/eac_cli/definition/alternative.rb', line 27 def @any_options_option ||= ::EacCli::Definition::BooleanOption.new( ANY_OPTION_SHORT, ANY_OPTION_LONG, ANY_OPTION_DESCRIPTION, optional: true, repeat: true, usage: false ) end |
#arg_opt(*args) ⇒ Object
34 35 36 |
# File 'lib/eac_cli/definition/alternative.rb', line 34 def arg_opt(*args) << ::EacCli::Definition::ArgumentOption.from_args(args) end |
#bool_opt(*args) ⇒ Object
38 39 40 |
# File 'lib/eac_cli/definition/alternative.rb', line 38 def bool_opt(*args) << ::EacCli::Definition::BooleanOption.from_args(args) end |
#options ⇒ Object
42 43 44 |
# File 'lib/eac_cli/definition/alternative.rb', line 42 def .to_a end |
#options_argument(enable) ⇒ Object
50 51 52 53 54 |
# File 'lib/eac_cli/definition/alternative.rb', line 50 def (enable) @options_argument = enable self end |
#options_argument? ⇒ Boolean
46 47 48 |
# File 'lib/eac_cli/definition/alternative.rb', line 46 def @options_argument ? true : false end |
#pos_arg(name, arg_options = {}) ⇒ Object
56 57 58 59 60 |
# File 'lib/eac_cli/definition/alternative.rb', line 56 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
62 63 64 |
# File 'lib/eac_cli/definition/alternative.rb', line 62 def positional pos_set.to_a end |
#positional_arguments_blocked_reason(new_pos_arg) ⇒ Object
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/eac_cli/definition/alternative.rb', line 66 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
77 78 79 80 81 |
# File 'lib/eac_cli/definition/alternative.rb', line 77 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
83 84 85 |
# File 'lib/eac_cli/definition/alternative.rb', line 83 def subcommands? pos_set.any?(&:subcommand?) end |