Class: ServiceMgrOptions

Inherits:
Object
  • Object
show all
Defined in:
lib/pvdgm-svc-client/service_mgr_options.rb

Constant Summary collapse

DEFAULT_SERVER =
'www.abaqis.com'
LOCAL_SERVER =
'localhost:3000'
UAT_SERVER =
'uat.abaqis.com'
DEFAULT_USE_SSL =
true
DEFAULT_RESOURCE =
'service'
DEFAULT_COMMAND =
'list'
DEFAULT_TOKEN =
ENV['API_TOKEN']

Instance Method Summary collapse

Constructor Details

#initializeServiceMgrOptions

Returns a new instance of ServiceMgrOptions.



11
12
13
14
15
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
45
46
47
48
49
50
51
52
53
54
55
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
87
88
89
90
# File 'lib/pvdgm-svc-client/service_mgr_options.rb', line 11

def initialize
  @options = {}

  @optparse = OptionParser.new do | opts |
    # Set a banner, displayed at the top of the help screen
    opts.banner = "Usage: service_mgr [ 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 '-u', '--unsafe', "If specified, will turn of SSL CA verification" do
      OpenSSL::SSL.const_set(:VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE) 
    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 '--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

    @options[:trace] = false
    opts.on '--trace', 'Set the output to verbose logging (including stack trace)' do
      @options[:trace] = true
    end

    opts.on '--account-mapping-id ID', 'The ID of the account mapping object' do | id |
      @options[:account_mapping_id] = id
    end

    opts.on '--configured-account-id ID', 'The ID of the configured account' do | id |
      @options[:configured_account_id] = id
    end

    opts.on '--facility-mapping-id ID', 'The ID of the facility mapping' do | id |
      @options[:facility_mapping_id] = id
    end

    opts.on '--service-definition-id ID', 'The ID of the service definition' do | id |
      @options[:service_definition_id] = id
    end

    opts.on '--service-id ID', 'The ID of the service' do | id |
      @options[:service_id] = id
    end

    opts.on '--third-party-id ID', 'The ID of the third party' do | id |
      @options[:third_party_id] = id
    end

  end
end

Instance Method Details

#invoke_commandObject



131
132
133
134
135
# File 'lib/pvdgm-svc-client/service_mgr_options.rb', line 131

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) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/pvdgm-svc-client/service_mgr_options.rb', line 92

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