# File lib/new_relic/cli/command.rb, line 57
      def self.run

        @command_names = @commands.map{ |c| c.command }

        extra = []
        options = ARGV.options do |opts|
          script_name = File.basename($0)
          if script_name =~ /newrelic_cmd$/
            $stdout.puts "warning: the 'newrelic_cmd' script has been renamed 'newrelic'"
            script_name = 'newrelic'
          end
          opts.banner = "Usage: #{script_name} [ #{ @command_names.join(" | ")} ] [options]"
          opts.separator "use '#{script_name} <command> -h' to see detailed command options"
          opts
        end
        extra = options.order!
        command = extra.shift
        # just make it a little easier on them
        command = 'deployments' if command =~ /deploy/
          if command.nil?
            STDERR.puts options
          elsif !@command_names.include?(command)
            STDERR.puts "Unrecognized command: #{command}"
            STDERR.puts options
          else
            command_class = @commands.find{ |c| c.command == command}
            command_class.new(extra).run
          end
      rescue OptionParser::InvalidOption => e
        raise NewRelic::Cli::Command::CommandFailure, e.message
      end