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

Class Method Details

.argumentsObject



17
18
19
# File 'lib/brigadier.rb', line 17

def arguments
  @@arguments
end

.default_commandObject



33
34
35
# File 'lib/brigadier.rb', line 33

def default_command
  @@default_command
end

.optionsObject



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_commandsObject



29
30
31
# File 'lib/brigadier.rb', line 29

def sub_commands
  @@sub_commands
end

.togglesObject



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

#argumentsObject



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

#optionsObject



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

Returns:

  • (Boolean)


62
63
64
# File 'lib/brigadier.rb', line 62

def sub_command?
  @sub_command || false
end

#sub_commandsObject



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

#togglesObject



46
47
48
# File 'lib/brigadier.rb', line 46

def toggles
  @toggles ||= {}
end