Class: NewRelic::Cli::Command

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

Direct Known Subclasses

Install

Defined Under Namespace

Classes: CommandFailure

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/cli/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/cli/command.rb', line 13

def leftover
  @leftover
end

Class Method Details

.inherited(subclass) ⇒ Object



49
50
51
# File 'lib/new_relic/cli/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
# File 'lib/new_relic/cli/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)

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

Instance Method Details

#err(message) ⇒ Object



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

def err(message)
  STDERR.puts message
end

#info(message) ⇒ Object



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

def info(message)
  STDOUT.puts message
end