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
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