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
Defined Under Namespace
Modules: Commands, Exceptions, Helper, Parameters, Validators
Classes: Runner
Constant Summary
collapse
- VERSION =
'0.1.2'.freeze
- @@arguments =
{}
- @@options =
{}
- @@toggles =
{}
- @@sub_commands =
{}
- @@default_command =
nil
Class Method Summary
collapse
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
.arguments ⇒ Object
17
18
19
|
# File 'lib/brigadier.rb', line 17
def arguments
@@arguments
end
|
.default_command ⇒ Object
33
34
35
|
# File 'lib/brigadier.rb', line 33
def default_command
@@default_command
end
|
.options ⇒ Object
21
22
23
|
# File 'lib/brigadier.rb', line 21
def options
@@options
end
|
.set_default_command(klass, block) ⇒ Object
37
38
39
|
# File 'lib/brigadier.rb', line 37
def set_default_command(klass, block)
@@default_command = Commands::Command.new(klass, block)
end
|
.sub_commands ⇒ Object
29
30
31
|
# File 'lib/brigadier.rb', line 29
def sub_commands
@@sub_commands
end
|
.toggles ⇒ Object
25
26
27
|
# File 'lib/brigadier.rb', line 25
def toggles
@@toggles
end
|
Instance Method Details
#argument(name, description, args = {}, &block) ⇒ Object
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
|
#arguments ⇒ Object
50
51
52
|
# File 'lib/brigadier.rb', line 50
def arguments
@arguments ||= {}
end
|
#execute(&block) ⇒ Object
58
59
60
|
# File 'lib/brigadier.rb', line 58
def execute(&block)
@execute_proc = block
end
|
#option(name, description, args = {}, &block) ⇒ Object
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
options[new_aliases] = Parameters::Option.new(name, description, args, block)
end
|
#options ⇒ Object
42
43
44
|
# File 'lib/brigadier.rb', line 42
def options
@options ||= {}
end
|
#sub_command(name, description, args = {}, &block) ⇒ Object
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
|
#sub_command? ⇒ Boolean
62
63
64
|
# File 'lib/brigadier.rb', line 62
def sub_command?
@sub_command || false
end
|
#sub_commands ⇒ Object
54
55
56
|
# File 'lib/brigadier.rb', line 54
def sub_commands
@sub_commands ||= {}
end
|
#toggle(name, description, args = {}, &block) ⇒ Object
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
|
#toggles ⇒ Object
46
47
48
|
# File 'lib/brigadier.rb', line 46
def toggles
@toggles ||= {}
end
|