class PhusionPassenger::Standalone::Main
def self.each_command
def self.each_command COMMANDS.each do |command_spec| command_name = command_spec[0] filename = command_name.sub(/-/, '_') + "_command" require "phusion_passenger/standalone/#{filename}" command_class = Standalone.const_get(command_spec[1]) yield(command_name, command_class) end end
def self.run!(argv)
def self.run!(argv) new.run!(argv) end
def command_exists?(name)
def command_exists?(name) return COMMANDS.any? do |element| element[0] == name end end
def run!(argv)
def run!(argv) command = argv[0] if command.nil? || command == '-h' || command == '--help' run_command('help') exit elsif command == '-v' || command == '--version' run_command('version') exit elsif command_exists?(command) begin run_command(command, argv[1..-1]) rescue => e if defined?(OptionParser::ParseError) && e.is_a?(OptionParser::ParseError) puts e puts puts "Please see '--help' for valid options." exit 1 elsif defined?(ConfigFile::DisallowedContextError) && e.is_a?(ConfigFile::DisallowedContextError) puts "*** Error in #{e.filename} line #{e.line}:" puts e exit 1 else raise e end end else STDERR.puts "Unknown command '#{command}'. Please type --help for options." exit 1 end end
def run_command(name, args = [])
def run_command(name, args = []) Main.each_command do |command_name, command_class| if command_name == name return command_class.new(args).run end end raise ArgumentError, "Command '#{name}' doesn't exist" end