    # File lib/mongrel/command.rb, line 175
          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"
              puts "Mongrel Web Server #{Mongrel::Const::MONGREL_VERSION}"
              return true
            end

            begin
              # quick hack so that existing commands will keep working but the Mongrel:: ones can be moved
              if ["start", "stop", "restart"].include? cmd_name
                cmd_name = "mongrel::" + cmd_name
              end

              command = GemPlugin::Manager.instance.create("/commands/#{cmd_name}", :argv => args)
            rescue OptionParser::InvalidOption
              STDERR.puts "#$! for command '#{cmd_name}'"
              STDERR.puts "Try #{cmd_name} -h to get help."
              return false
            rescue
              STDERR.puts "ERROR RUNNING '#{cmd_name}': #$!"
              STDERR.puts "Use help command to get help"
              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