invoker 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.rubocop.yml +30 -0
  4. data/.travis.yml +1 -0
  5. data/Gemfile +1 -0
  6. data/bin/invoker +4 -8
  7. data/invoker.gemspec +10 -11
  8. data/lib/invoker.rb +95 -21
  9. data/lib/invoker/cli.rb +126 -0
  10. data/lib/invoker/cli/pinger.rb +23 -0
  11. data/lib/invoker/cli/question.rb +15 -0
  12. data/lib/invoker/cli/tail.rb +34 -0
  13. data/lib/invoker/cli/tail_watcher.rb +34 -0
  14. data/lib/invoker/command_worker.rb +28 -2
  15. data/lib/invoker/commander.rb +34 -236
  16. data/lib/invoker/config.rb +5 -0
  17. data/lib/invoker/daemon.rb +126 -0
  18. data/lib/invoker/dns_cache.rb +23 -0
  19. data/lib/invoker/errors.rb +1 -0
  20. data/lib/invoker/ipc.rb +45 -0
  21. data/lib/invoker/ipc/add_command.rb +12 -0
  22. data/lib/invoker/ipc/add_http_command.rb +10 -0
  23. data/lib/invoker/ipc/base_command.rb +24 -0
  24. data/lib/invoker/ipc/client_handler.rb +26 -0
  25. data/lib/invoker/ipc/dns_check_command.rb +16 -0
  26. data/lib/invoker/ipc/list_command.rb +11 -0
  27. data/lib/invoker/ipc/message.rb +170 -0
  28. data/lib/invoker/ipc/message/list_response.rb +33 -0
  29. data/lib/invoker/ipc/message/tail_response.rb +10 -0
  30. data/lib/invoker/ipc/ping_command.rb +10 -0
  31. data/lib/invoker/ipc/reload_command.rb +12 -0
  32. data/lib/invoker/ipc/remove_command.rb +12 -0
  33. data/lib/invoker/{command_listener → ipc}/server.rb +6 -11
  34. data/lib/invoker/ipc/tail_command.rb +11 -0
  35. data/lib/invoker/ipc/unix_client.rb +60 -0
  36. data/lib/invoker/parsers/config.rb +1 -0
  37. data/lib/invoker/power/balancer.rb +17 -7
  38. data/lib/invoker/power/config.rb +6 -3
  39. data/lib/invoker/power/dns.rb +22 -21
  40. data/lib/invoker/power/http_response.rb +1 -1
  41. data/lib/invoker/power/power.rb +3 -0
  42. data/lib/invoker/power/powerup.rb +3 -2
  43. data/lib/invoker/power/setup.rb +6 -4
  44. data/lib/invoker/process_manager.rb +187 -0
  45. data/lib/invoker/process_printer.rb +27 -38
  46. data/lib/invoker/reactor.rb +19 -38
  47. data/lib/invoker/reactor/reader.rb +53 -0
  48. data/lib/invoker/version.rb +1 -1
  49. data/readme.md +1 -1
  50. data/spec/invoker/cli/pinger_spec.rb +22 -0
  51. data/spec/invoker/cli/tail_watcher_spec.rb +39 -0
  52. data/spec/invoker/cli_spec.rb +27 -0
  53. data/spec/invoker/command_worker_spec.rb +30 -0
  54. data/spec/invoker/commander_spec.rb +57 -127
  55. data/spec/invoker/config_spec.rb +21 -0
  56. data/spec/invoker/daemon_spec.rb +34 -0
  57. data/spec/invoker/invoker_spec.rb +31 -0
  58. data/spec/invoker/ipc/client_handler_spec.rb +44 -0
  59. data/spec/invoker/ipc/dns_check_command_spec.rb +32 -0
  60. data/spec/invoker/ipc/message/list_response_spec.rb +22 -0
  61. data/spec/invoker/ipc/message_spec.rb +45 -0
  62. data/spec/invoker/ipc/unix_client_spec.rb +29 -0
  63. data/spec/invoker/power/setup_spec.rb +1 -1
  64. data/spec/invoker/process_manager_spec.rb +98 -0
  65. data/spec/invoker/reactor_spec.rb +6 -0
  66. data/spec/spec_helper.rb +15 -24
  67. metadata +107 -77
  68. data/lib/invoker/command_listener/client.rb +0 -45
  69. data/lib/invoker/parsers/option_parser.rb +0 -106
  70. data/lib/invoker/power.rb +0 -7
  71. data/lib/invoker/runner.rb +0 -98
  72. data/spec/invoker/command_listener/client_spec.rb +0 -52
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: invoker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hemant Kumar
@@ -9,202 +9,188 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-30 00:00:00.000000000 Z
12
+ date: 2014-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: slop
15
+ name: thor
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 3.4.6
20
+ version: '0.19'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 3.4.6
27
+ version: '0.19'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rainbow
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.1.4
34
+ version: '2.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.1.4
41
+ version: '2.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: iniparse
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 1.1.6
48
+ version: '1.1'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 1.1.6
55
+ version: '1.1'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: formatador
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 0.2.4
62
+ version: '0.2'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.2.4
69
+ version: '0.2'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: eventmachine
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 1.0.3
76
+ version: '1.0'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: 1.0.3
83
+ version: '1.0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: em-proxy
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 0.1.8
90
+ version: '0.1'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 0.1.8
97
+ version: '0.1'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rubydns
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: 0.6.5
104
+ version: '0.7'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ~>
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: 0.6.5
111
+ version: '0.7'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: uuid
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: 2.3.7
118
+ version: '2.3'
119
119
  type: :runtime
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: 2.3.7
126
- - !ruby/object:Gem::Dependency
127
- name: highline
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ~>
131
- - !ruby/object:Gem::Version
132
- version: 1.6.19
133
- type: :runtime
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ~>
138
- - !ruby/object:Gem::Version
139
- version: 1.6.19
125
+ version: '2.3'
140
126
  - !ruby/object:Gem::Dependency
141
127
  name: http-parser-lite
142
128
  requirement: !ruby/object:Gem::Requirement
143
129
  requirements:
144
- - - ~>
130
+ - - "~>"
145
131
  - !ruby/object:Gem::Version
146
- version: 0.6.0
132
+ version: '0.6'
147
133
  type: :runtime
148
134
  prerelease: false
149
135
  version_requirements: !ruby/object:Gem::Requirement
150
136
  requirements:
151
- - - ~>
137
+ - - "~>"
152
138
  - !ruby/object:Gem::Version
153
- version: 0.6.0
139
+ version: '0.6'
154
140
  - !ruby/object:Gem::Dependency
155
141
  name: dotenv
156
142
  requirement: !ruby/object:Gem::Requirement
157
143
  requirements:
158
- - - ~>
144
+ - - "~>"
159
145
  - !ruby/object:Gem::Version
160
- version: 0.9.0
146
+ version: '0.9'
161
147
  type: :runtime
162
148
  prerelease: false
163
149
  version_requirements: !ruby/object:Gem::Requirement
164
150
  requirements:
165
- - - ~>
151
+ - - "~>"
166
152
  - !ruby/object:Gem::Version
167
- version: 0.9.0
153
+ version: '0.9'
168
154
  - !ruby/object:Gem::Dependency
169
155
  name: rspec
170
156
  requirement: !ruby/object:Gem::Requirement
171
157
  requirements:
172
- - - '>='
158
+ - - ">="
173
159
  - !ruby/object:Gem::Version
174
160
  version: '0'
175
161
  type: :development
176
162
  prerelease: false
177
163
  version_requirements: !ruby/object:Gem::Requirement
178
164
  requirements:
179
- - - '>='
165
+ - - ">="
180
166
  - !ruby/object:Gem::Version
181
167
  version: '0'
182
168
  - !ruby/object:Gem::Dependency
183
169
  name: mocha
184
170
  requirement: !ruby/object:Gem::Requirement
185
171
  requirements:
186
- - - '>='
172
+ - - ">="
187
173
  - !ruby/object:Gem::Version
188
174
  version: '0'
189
175
  type: :development
190
176
  prerelease: false
191
177
  version_requirements: !ruby/object:Gem::Requirement
192
178
  requirements:
193
- - - '>='
179
+ - - ">="
194
180
  - !ruby/object:Gem::Version
195
181
  version: '0'
196
182
  - !ruby/object:Gem::Dependency
197
183
  name: rake
198
184
  requirement: !ruby/object:Gem::Requirement
199
185
  requirements:
200
- - - '>='
186
+ - - ">="
201
187
  - !ruby/object:Gem::Version
202
188
  version: '0'
203
189
  type: :development
204
190
  prerelease: false
205
191
  version_requirements: !ruby/object:Gem::Requirement
206
192
  requirements:
207
- - - '>='
193
+ - - ">="
208
194
  - !ruby/object:Gem::Version
209
195
  version: '0'
210
196
  description: Something small for process management
@@ -214,10 +200,11 @@ executables:
214
200
  extensions: []
215
201
  extra_rdoc_files: []
216
202
  files:
217
- - .coveralls.yml
218
- - .gitignore
219
- - .rspec
220
- - .travis.yml
203
+ - ".coveralls.yml"
204
+ - ".gitignore"
205
+ - ".rspec"
206
+ - ".rubocop.yml"
207
+ - ".travis.yml"
221
208
  - Gemfile
222
209
  - MIT-LICENSE
223
210
  - Rakefile
@@ -225,42 +212,74 @@ files:
225
212
  - bin/invoker
226
213
  - invoker.gemspec
227
214
  - lib/invoker.rb
228
- - lib/invoker/command_listener/client.rb
229
- - lib/invoker/command_listener/server.rb
215
+ - lib/invoker/cli.rb
216
+ - lib/invoker/cli/pinger.rb
217
+ - lib/invoker/cli/question.rb
218
+ - lib/invoker/cli/tail.rb
219
+ - lib/invoker/cli/tail_watcher.rb
230
220
  - lib/invoker/command_worker.rb
231
221
  - lib/invoker/commander.rb
222
+ - lib/invoker/config.rb
223
+ - lib/invoker/daemon.rb
224
+ - lib/invoker/dns_cache.rb
232
225
  - lib/invoker/errors.rb
233
226
  - lib/invoker/event/manager.rb
227
+ - lib/invoker/ipc.rb
228
+ - lib/invoker/ipc/add_command.rb
229
+ - lib/invoker/ipc/add_http_command.rb
230
+ - lib/invoker/ipc/base_command.rb
231
+ - lib/invoker/ipc/client_handler.rb
232
+ - lib/invoker/ipc/dns_check_command.rb
233
+ - lib/invoker/ipc/list_command.rb
234
+ - lib/invoker/ipc/message.rb
235
+ - lib/invoker/ipc/message/list_response.rb
236
+ - lib/invoker/ipc/message/tail_response.rb
237
+ - lib/invoker/ipc/ping_command.rb
238
+ - lib/invoker/ipc/reload_command.rb
239
+ - lib/invoker/ipc/remove_command.rb
240
+ - lib/invoker/ipc/server.rb
241
+ - lib/invoker/ipc/tail_command.rb
242
+ - lib/invoker/ipc/unix_client.rb
234
243
  - lib/invoker/logger.rb
235
244
  - lib/invoker/parsers/config.rb
236
- - lib/invoker/parsers/option_parser.rb
237
245
  - lib/invoker/parsers/procfile.rb
238
- - lib/invoker/power.rb
239
246
  - lib/invoker/power/balancer.rb
240
247
  - lib/invoker/power/config.rb
241
248
  - lib/invoker/power/dns.rb
242
249
  - lib/invoker/power/http_response.rb
243
250
  - lib/invoker/power/port_finder.rb
251
+ - lib/invoker/power/power.rb
244
252
  - lib/invoker/power/powerup.rb
245
253
  - lib/invoker/power/setup.rb
246
254
  - lib/invoker/power/templates/404.html
247
255
  - lib/invoker/power/templates/503.html
256
+ - lib/invoker/process_manager.rb
248
257
  - lib/invoker/process_printer.rb
249
258
  - lib/invoker/reactor.rb
250
- - lib/invoker/runner.rb
259
+ - lib/invoker/reactor/reader.rb
251
260
  - lib/invoker/version.rb
252
261
  - readme.md
253
- - spec/invoker/command_listener/client_spec.rb
262
+ - spec/invoker/cli/pinger_spec.rb
263
+ - spec/invoker/cli/tail_watcher_spec.rb
264
+ - spec/invoker/cli_spec.rb
254
265
  - spec/invoker/command_worker_spec.rb
255
266
  - spec/invoker/commander_spec.rb
256
267
  - spec/invoker/config_spec.rb
268
+ - spec/invoker/daemon_spec.rb
257
269
  - spec/invoker/event/manager_spec.rb
258
270
  - spec/invoker/invoker_spec.rb
271
+ - spec/invoker/ipc/client_handler_spec.rb
272
+ - spec/invoker/ipc/dns_check_command_spec.rb
273
+ - spec/invoker/ipc/message/list_response_spec.rb
274
+ - spec/invoker/ipc/message_spec.rb
275
+ - spec/invoker/ipc/unix_client_spec.rb
259
276
  - spec/invoker/power/balancer_spec.rb
260
277
  - spec/invoker/power/config_spec.rb
261
278
  - spec/invoker/power/http_response_spec.rb
262
279
  - spec/invoker/power/port_finder_spec.rb
263
280
  - spec/invoker/power/setup_spec.rb
281
+ - spec/invoker/process_manager_spec.rb
282
+ - spec/invoker/reactor_spec.rb
264
283
  - spec/spec_helper.rb
265
284
  homepage: http://invoker.codemancers.com
266
285
  licenses:
@@ -272,30 +291,41 @@ require_paths:
272
291
  - lib
273
292
  required_ruby_version: !ruby/object:Gem::Requirement
274
293
  requirements:
275
- - - '>='
294
+ - - ">="
276
295
  - !ruby/object:Gem::Version
277
296
  version: '0'
278
297
  required_rubygems_version: !ruby/object:Gem::Requirement
279
298
  requirements:
280
- - - '>='
299
+ - - ">="
281
300
  - !ruby/object:Gem::Version
282
301
  version: '0'
283
302
  requirements: []
284
303
  rubyforge_project:
285
- rubygems_version: 2.0.3
304
+ rubygems_version: 2.2.2
286
305
  signing_key:
287
306
  specification_version: 4
288
307
  summary: Something small for Process management
289
308
  test_files:
290
- - spec/invoker/command_listener/client_spec.rb
309
+ - spec/invoker/cli/pinger_spec.rb
310
+ - spec/invoker/cli/tail_watcher_spec.rb
311
+ - spec/invoker/cli_spec.rb
291
312
  - spec/invoker/command_worker_spec.rb
292
313
  - spec/invoker/commander_spec.rb
293
314
  - spec/invoker/config_spec.rb
315
+ - spec/invoker/daemon_spec.rb
294
316
  - spec/invoker/event/manager_spec.rb
295
317
  - spec/invoker/invoker_spec.rb
318
+ - spec/invoker/ipc/client_handler_spec.rb
319
+ - spec/invoker/ipc/dns_check_command_spec.rb
320
+ - spec/invoker/ipc/message/list_response_spec.rb
321
+ - spec/invoker/ipc/message_spec.rb
322
+ - spec/invoker/ipc/unix_client_spec.rb
296
323
  - spec/invoker/power/balancer_spec.rb
297
324
  - spec/invoker/power/config_spec.rb
298
325
  - spec/invoker/power/http_response_spec.rb
299
326
  - spec/invoker/power/port_finder_spec.rb
300
327
  - spec/invoker/power/setup_spec.rb
328
+ - spec/invoker/process_manager_spec.rb
329
+ - spec/invoker/reactor_spec.rb
301
330
  - spec/spec_helper.rb
331
+ has_rdoc:
@@ -1,45 +0,0 @@
1
- module Invoker
2
- module CommandListener
3
- class Client
4
- attr_accessor :client_socket
5
- def initialize(client_socket)
6
- @client_socket = client_socket
7
- end
8
-
9
- def read_and_execute
10
- command_info = client_socket.gets()
11
- command_info && command_info.strip!
12
-
13
- if command_info && !command_info.empty?
14
- worker_command, command_label, rest_args = command_info.strip.split(" ")
15
- worker_command.strip!
16
- if worker_command
17
- run_command(worker_command, command_label, rest_args)
18
- end
19
- end
20
- end
21
-
22
- def run_command(worker_command, command_label, rest_args = nil)
23
- case worker_command
24
- when 'add'
25
- Invoker::COMMANDER.on_next_tick(command_label) { |b_command_label|
26
- add_command_by_label(b_command_label)
27
- }
28
- when 'list'
29
- json = Invoker::COMMANDER.list_commands()
30
- client_socket.puts(json)
31
- when 'remove'
32
- Invoker::COMMANDER.on_next_tick(command_label, rest_args) { |b_command_label,b_rest_args|
33
- remove_command(b_command_label, b_rest_args)
34
- }
35
- when 'reload'
36
- Invoker::COMMANDER.on_next_tick(command_label, rest_args) { |b_command_label, b_rest_args|
37
- reload_command(b_command_label, b_rest_args)
38
- }
39
- else
40
- Invoker::Logger.puts("\n Invalid command".color(:red))
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,106 +0,0 @@
1
- require "slop"
2
- require "ostruct"
3
-
4
- module Invoker
5
- module Parsers
6
- class OptionParser
7
- def self.parse(args)
8
- selected_command = nil
9
- opts = Slop.parse(args, help: true) do
10
- on :v, "Print the version" do
11
- selected_command = OpenStruct.new(:command => 'version')
12
- end
13
- on :p, :port=, "Port series to be used for starting rack servers", as: Integer
14
-
15
- command 'start' do
16
- banner "Usage : invoker start config.ini \n Start Invoker Process Manager"
17
- on :p, :port=, "Port series to be used for starting rack servers", as: Integer
18
- run do |cmd_opts, cmd_args|
19
- port = cmd_opts.to_hash[:port] || 9000
20
- selected_command = OpenStruct.new(
21
- :command => 'start',
22
- :file => cmd_args.first,
23
- :port => port
24
- )
25
- end
26
- end
27
-
28
- command 'setup' do
29
- banner "Usage : invoker setup \n Sets up firewall rules for subdomains"
30
- run do |cmd_opts, cmd_args|
31
- selected_command = OpenStruct.new(:command => 'setup')
32
- end
33
- end
34
-
35
- command 'uninstall' do
36
- banner "Usage : invoker uninstall \n Removes firewall rules created by setup"
37
- run do |cmd_opts, cmd_args|
38
- selected_command = OpenStruct.new(:command => 'uninstall')
39
- end
40
- end
41
-
42
- command 'list' do
43
- banner "Usage : invoker list\n List processes managed by invoker"
44
- run do |cmd_opts, cmd_args|
45
- selected_command = OpenStruct.new(:command => 'list')
46
- end
47
- end
48
-
49
- command 'add' do
50
- banner "Usage : invoker add process_label \n Start the process with given process_label"
51
- run do |cmd_opts, cmd_args|
52
- selected_command = OpenStruct.new(:command => 'add', :command_key => cmd_args.first)
53
- end
54
- end
55
-
56
- command 'remove' do
57
- banner "Usage : invoker remove process_label \n Stop the process with given label"
58
- on :s, :signal=, "Signal to send for killing the process, default is SIGINT", as: String
59
-
60
- run do |cmd_opts, cmd_args|
61
- signal_to_use = cmd_opts.to_hash[:signal] || 'INT'
62
- selected_command = OpenStruct.new(
63
- :command => 'remove',
64
- :command_key => cmd_args.first,
65
- :signal => signal_to_use
66
- )
67
- end
68
- end
69
-
70
- command 'reload' do
71
- banner "Usage : invoker reload process_label \n Restart the process with given label"
72
- on :s, :signal=, "Signal to send for killing the process, default is SIGINT", as: String
73
-
74
- run do |cmd_opts, cmd_args|
75
- signal_to_use = cmd_opts.to_hash[:signal] || 'INT'
76
- selected_command = OpenStruct.new(
77
- :command => 'reload',
78
- :command_key => cmd_args.first,
79
- :signal => signal_to_use
80
- )
81
- end
82
- end
83
- end
84
-
85
- selected_command || create_default_command(args, opts)
86
- end
87
-
88
- # If user specifies no command either show help message or start the invoker
89
- # process supervisor.
90
- #
91
- # @param args [Array] command line arguments
92
- # @param opts [Slop::Options] Processed slop options
93
- # @return [OpenStruct, false] returns default command or nil
94
- def self.create_default_command(args, opts)
95
- if args.first && File.exists?(args.first) && File.file?(args.first)
96
- port = opts.to_hash[:port] || 9000
97
- OpenStruct.new(:command => "start", :file => args.first, :port => port)
98
- else
99
- Invoker::Logger.puts opts
100
- false
101
- end
102
- end
103
-
104
- end
105
- end
106
- end