invoker 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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