class BeanstalkApiOptions
Constants
- DEFAULT_COMMAND
- DEFAULT_RESOURCE
- DEFAULT_SERVER
- DEFAULT_TOKEN
- DEFAULT_USE_SSL
- LOCAL_SERVER
- UAT_SERVER
Public Class Methods
new()
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 11 def initialize @options = { all_stats: false} @optparse = OptionParser.new do | opts | # Set a banner, displayed at the top of the help screen opts.banner = "Usage: beanstalk_api [ options ] [ resource [ command ] ]" opts.on '-h', '--help', 'Display the help message' do puts opts puts print_valid_resources puts exit end @options[:server] = DEFAULT_SERVER opts.on '-s', '--server SERVER', "Specify the abaqis server to hit (default #{DEFAULT_SERVER})" do | server | @options[:server] = server end @options[:use_ssl] = DEFAULT_USE_SSL opts.on '-n', '--no-ssl', "If specified, SSL will NOT be used for the call to the server" do @options[:use_ssl] = false end opts.on '--local', 'Set the host to the localhost and non-ssl as a testing convenience' do @options[:server] = LOCAL_SERVER @options[:use_ssl] = false end opts.on '--uat', 'Set the host to the uat machine and ssl as a testing convenience' do @options[:server] = UAT_SERVER @options[:use_ssl] = true end opts.on '-l', '--list', 'List the valid commands' do print_valid_resources exit end @options[:api_token] = DEFAULT_TOKEN opts.on '-t', '--token TOKEN', 'The API security token to use (defaults to ENV["API_TOKEN"])' do | token | @options[:api_token] = token end opts.on '--tube TUBE_NAME', 'The name of the tube to use for the query' do | tube_name | @options[:tube] = tube_name end opts.on '--all', 'Indicates that all statistics values should be show' do @options[:all_stats] = true end end end
Public Instance Methods
invoke_command()
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 106 def invoke_command options, resource, command = parse_options! eval("Resources::#{ActiveSupport::Inflector.camelize(resource)}").new(options).send(command.to_sym) end
parse_options!(argv=ARGV)
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 67 def parse_options!(argv=ARGV) @optparse.parse!(argv) resource = argv.shift || DEFAULT_RESOURCE command = argv.shift || DEFAULT_COMMAND # Check to make sure we have a valid resource unless valid_resource?(resource) puts @optparse puts puts "Invalid resource: #{resource}" puts print_valid_resources exit end # Must have been a valid resource; do we have a valid command unless valid_command?(resource, command) puts @optparse puts puts "Invalid command (#{command}) for resource (#{resource})" puts print_valid_resources exit end # Check the API token if @options[:api_token].nil? puts @optparse puts puts "Must specify an API token either via the environment variable 'API_TOKEN' or via the -t option" puts print_valid_resources exit end [ @options, resource, command ] end
Private Instance Methods
print_valid_commands(resource)
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 132 def print_valid_commands(resource) eval("Resources::#{ActiveSupport::Inflector.camelize(resource)}").instance_methods(false).map { | command | command.to_s }.join(", ") end
print_valid_resources()
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 123 def print_valid_resources puts "Valid Resources:" Resources.constants.each do | const | resource_string = ActiveSupport::Inflector.underscore(const.to_s) puts " - #{resource_string}" puts " Commands: #{print_valid_commands(resource_string)} Default: list" end end
valid_command?(resource, command)
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 114 def valid_command?(resource, command) return false if resource.blank? || command.blank? eval("Resources::#{ActiveSupport::Inflector.camelize(resource)}").instance_methods(false).include?(command.to_sym) end
valid_resource?(resource)
click to toggle source
# File lib/pvdgm-bs-client/beanstalk_api_options.rb, line 119 def valid_resource?(resource) Resources.constants.map { | const | ActiveSupport::Inflector.underscore(const.to_s) }.include?(resource) end