Class: Appsignal::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/appsignal/cli.rb,
lib/appsignal/cli/install.rb,
lib/appsignal/cli/diagnose.rb,
lib/appsignal/cli/notify_of_deploy.rb

Defined Under Namespace

Classes: Diagnose, Install, NotifyOfDeploy

Constant Summary collapse

AVAILABLE_COMMANDS =
%w(diagnose install notify_of_deploy).freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject

Returns the value of attribute config.



14
15
16
# File 'lib/appsignal/cli.rb', line 14

def config
  @config
end

.initial_configObject

Returns the value of attribute initial_config.



14
15
16
# File 'lib/appsignal/cli.rb', line 14

def initial_config
  @initial_config
end

.optionsObject

Returns the value of attribute options.



14
15
16
# File 'lib/appsignal/cli.rb', line 14

def options
  @options
end

Class Method Details

.command_option_parserObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/appsignal/cli.rb', line 74

def command_option_parser
  {
    'diagnose' => OptionParser.new,
    'install' => OptionParser.new,
    'notify_of_deploy' => OptionParser.new do |o|
      o.banner = 'Usage: appsignal notify_of_deploy [options]'

      o.on '--revision=<revision>', "The revision you're deploying" do |arg|
        options[:revision] = arg
      end

      o.on '--user=<user>', "The name of the user that's deploying" do |arg|
        options[:user] = arg
      end

      o.on '--environment=<rails_env>', "The environment you're deploying to" do |arg|
        options[:environment] = arg
      end

      o.on '--name=<name>', "The name of the app (optional)" do |arg|
        initial_config[:name] = arg
      end
    end
  }
end

.global_option_parserObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/appsignal/cli.rb', line 55

def global_option_parser
  OptionParser.new do |o|
    o.banner = 'Usage: appsignal <command> [options]'

    o.on '-v', '--version', "Print version and exit" do |arg|
      puts "Appsignal #{Appsignal::VERSION}"
      exit(0)
    end

    o.on '-h', '--help', "Show help and exit" do
      puts o
      exit(0)
    end

    o.separator ''
    o.separator "Available commands: #{AVAILABLE_COMMANDS.join(', ')}"
  end
end

.run(argv = ARGV) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/appsignal/cli.rb', line 16

def run(argv=ARGV)
  @options = {}
  @initial_config = {}
  global = global_option_parser
  commands = command_option_parser
  global.order!(argv)
  command = argv.shift
  if command
    if AVAILABLE_COMMANDS.include?(command)
      commands[command].parse!(argv)
      case command.to_sym
      when :diagnose
        Appsignal::CLI::Diagnose.run
      when :install
        Appsignal::CLI::Install.run(argv.shift, config)
      when :notify_of_deploy
        Appsignal::CLI::NotifyOfDeploy.run(options, config)
      end
    else
      puts "Command '#{command}' does not exist, run appsignal -h to "\
        "see the help"
      exit(1)
    end
  else
    # Print help
    puts global
    exit(0)
  end
end