Class: Mongrel::Command::Registry

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/mongrel/command.rb

Overview

A Singleton class that manages all of the available commands and handles running them.

Instance Method Summary collapse

Instance Method Details

#commandsObject

Builds a list of possible commands from the Command derivates list



149
150
151
152
153
# File 'lib/mongrel/command.rb', line 149

def commands
  pmgr = GemPlugin::Manager.instance
  list = pmgr.plugins["/commands"].keys
  return list.sort
end

Prints a list of available commands.



156
157
158
159
160
161
162
163
164
165
# File 'lib/mongrel/command.rb', line 156

def print_command_list
  puts "#{Mongrel::Command::BANNER}\nAvailable commands are:\n\n"

  self.commands.each do |name|
    puts " - #{name[1 .. -1]}\n"
  end

  puts "\nEach command takes -h as an option to get help."

end

#run(args) ⇒ Object

Runs the args against the first argument as the command name. If it has any errors it returns a false, otherwise it return true.



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/mongrel/command.rb', line 170

def run(args)
  # find the command
  cmd_name = args.shift

  if !cmd_name or cmd_name == "?" or cmd_name == "help"
    print_command_list
    return true
  elsif cmd_name == "--version"
    STDERR.puts "Mongrel Web Server #{Mongrel::Const::MONGREL_VERSION}"
    return true
  end

  # command exists, set it up and validate it
  begin
    command = GemPlugin::Manager.instance.create("/commands/#{cmd_name}", :argv => args)
  rescue
    STDERR.puts "INVALID COMMAND: #$!"
    print_command_list
    return false
  end

  # Normally the command is NOT valid right after being created
  # but sometimes (like with -h or -v) there's no further processing
  # needed so the command is already valid so we can skip it.
  if not command.done_validating
    if not command.validate
      STDERR.puts "#{cmd_name} reported an error. Use mongrel_rails #{cmd_name} -h to get help."
      return false
    else
      command.run
    end
  end

  return true
end