Module: Brigadier
- Defined in:
- lib/brigadier.rb,
lib/brigadier/helper.rb,
lib/brigadier/runner.rb,
lib/brigadier/version.rb,
lib/brigadier/commands.rb,
lib/brigadier/exceptions.rb,
lib/brigadier/parameters.rb,
lib/brigadier/validators.rb,
lib/brigadier/commands/base.rb,
lib/brigadier/exceptions/base.rb,
lib/brigadier/parameters/base.rb,
lib/brigadier/validators/base.rb,
lib/brigadier/commands/command.rb,
lib/brigadier/validators/email.rb,
lib/brigadier/parameters/option.rb,
lib/brigadier/parameters/toggle.rb,
lib/brigadier/parameters/argument.rb,
lib/brigadier/commands/sub_command.rb,
lib/brigadier/exceptions/value_invalid.rb,
lib/brigadier/exceptions/value_missing.rb,
lib/brigadier/exceptions/execute_block_missing.rb more...
Defined Under Namespace
Modules: Commands, Exceptions, Helper, Parameters, Validators Classes: Runner
Constant Summary collapse
- VERSION =
'0.1.1'.freeze
- @@arguments =
{}
- @@options =
{}
- @@toggles =
{}
- @@sub_commands =
{}
- @@default_command =
nil
Class Method Summary collapse
- .arguments ⇒ Object
- .default_command ⇒ Object
- .options ⇒ Object
- .set_default_command(klass, block) ⇒ Object
- .sub_commands ⇒ Object
- .toggles ⇒ Object
Instance Method Summary collapse
- #argument(name, description, args = {}, &block) ⇒ Object
- #arguments ⇒ Object
- #execute(&block) ⇒ Object
- #option(name, description, args = {}, &block) ⇒ Object
- #options ⇒ Object
- #sub_command(name, description, args = {}, &block) ⇒ Object
- #sub_command? ⇒ Boolean
- #sub_commands ⇒ Object
- #toggle(name, description, args = {}, &block) ⇒ Object
- #toggles ⇒ Object
Class Method Details
permalink .arguments ⇒ Object
[View source]
17 18 19 |
# File 'lib/brigadier.rb', line 17 def arguments @@arguments end |
permalink .default_command ⇒ Object
[View source]
33 34 35 |
# File 'lib/brigadier.rb', line 33 def default_command @@default_command end |
permalink .set_default_command(klass, block) ⇒ Object
[View source]
37 38 39 |
# File 'lib/brigadier.rb', line 37 def set_default_command(klass, block) @@default_command = Commands::Command.new(klass, block) end |
permalink .sub_commands ⇒ Object
[View source]
29 30 31 |
# File 'lib/brigadier.rb', line 29 def sub_commands @@sub_commands end |
permalink .toggles ⇒ Object
[View source]
25 26 27 |
# File 'lib/brigadier.rb', line 25 def toggles @@toggles end |
Instance Method Details
permalink #argument(name, description, args = {}, &block) ⇒ Object
[View source]
76 77 78 |
# File 'lib/brigadier.rb', line 76 def argument(name, description, args = {}, &block) arguments[name] = Parameters::Argument.new(name, description, args, block) end |
permalink #arguments ⇒ Object
[View source]
50 51 52 |
# File 'lib/brigadier.rb', line 50 def arguments @arguments ||= {} end |
permalink #execute(&block) ⇒ Object
[View source]
58 59 60 |
# File 'lib/brigadier.rb', line 58 def execute(&block) @execute_proc = block end |
permalink #option(name, description, args = {}, &block) ⇒ Object
[View source]
80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/brigadier.rb', line 80 def option(name, description, args = {}, &block) new_aliases = [] aliases = args.fetch(:aliases, []) ([ *name ] + aliases).each do |n| new_aliases << "--#{n}" new_aliases << "-#{n}" end new_aliases.uniq! args[:aliases] = new_aliases [new_aliases] = Parameters::Option.new(name, description, args, block) end |
permalink #options ⇒ Object
[View source]
42 43 44 |
# File 'lib/brigadier.rb', line 42 def ||= {} end |
permalink #sub_command(name, description, args = {}, &block) ⇒ Object
[View source]
66 67 68 69 70 71 72 73 74 |
# File 'lib/brigadier.rb', line 66 def sub_command(name, description, args = {}, &block) @sub_command = true instance = args.fetch(:instance, new) aliases = args.fetch(:aliases, []) all_aliases = ([ *name ] + aliases).uniq args[:aliases] = all_aliases sub_commands[all_aliases] = Commands::SubCommand.new(name, description, instance, args, block) end |
permalink #sub_command? ⇒ Boolean
62 63 64 |
# File 'lib/brigadier.rb', line 62 def sub_command? @sub_command || false end |
permalink #sub_commands ⇒ Object
[View source]
54 55 56 |
# File 'lib/brigadier.rb', line 54 def sub_commands @sub_commands ||= {} end |
permalink #toggle(name, description, args = {}, &block) ⇒ Object
[View source]
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/brigadier.rb', line 94 def toggle(name, description, args = {}, &block) new_aliases = [] new_inverse_aliases = [] aliases = args.fetch(:aliases, []) modifiers = %w( -- - ) inverse_modifiers = %w( -no- --no- -not- --not- -no_ --no_ -not_ --not_ ) ([ *name ] + aliases).each do |n| alt_name = n.gsub(/[ -]/, '_') modifiers.each do |modifier| new_aliases << '%s%s' % [ modifier, n] new_aliases << '%s%s' % [ modifier, alt_name ] end inverse_modifiers.each do |modifier| new_inverse_aliases << '%s%s' % [ modifier, n] new_inverse_aliases << '%s%s' % [ modifier, alt_name ] end end new_aliases.uniq! new_inverse_aliases.uniq! all_aliases = [ new_aliases + new_inverse_aliases ].uniq.flatten args[:aliases] = new_aliases args[:inverse_aliases] = new_inverse_aliases toggles[all_aliases] = Parameters::Toggle.new(name, description, args, block) end |
permalink #toggles ⇒ Object
[View source]
46 47 48 |
# File 'lib/brigadier.rb', line 46 def toggles @toggles ||= {} end |