Class: NewRelic::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/new_relic/command.rb

Direct Known Subclasses

Deployments, Install

Defined Under Namespace

Classes: CommandFailure, Deployments, Install

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(command_line_args) ⇒ Command

Returns a new instance of Command.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/new_relic/command.rb', line 31

def initialize(command_line_args)
  if Hash === command_line_args
    # command line args is an options hash
    command_line_args.each do | key, value |
      instance_variable_set "@#{key}", value.to_s if value
    end
  else
    # parse command line args.  Throw an exception on a bad arg.
    @options = options do | opts |
      opts.on("-h", "Show this help") {  raise CommandFailure, opts.to_s }
    end
    @leftover = @options.parse(command_line_args)
  end
rescue OptionParser::ParseError => e
  raise CommandFailure.new(e.message, @options)
end

Instance Attribute Details

#leftoverObject

Returns the value of attribute leftover.



13
14
15
# File 'lib/new_relic/command.rb', line 13

def leftover
  @leftover
end

Class Method Details

.inherited(subclass) ⇒ Object



49
50
51
# File 'lib/new_relic/command.rb', line 49

def self.inherited(subclass)
  @commands << subclass
end

.runObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/new_relic/command.rb', line 56

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::Command::CommandFailure, e.message
end

Instance Method Details

#err(message) ⇒ Object



27
28
29
# File 'lib/new_relic/command.rb', line 27

def err(message)
  STDERR.puts message
end

#info(message) ⇒ Object



23
24
25
# File 'lib/new_relic/command.rb', line 23

def info(message)
  STDOUT.puts message
end