commander 4.5.0 → 4.5.1
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.
- checksums.yaml +4 -4
- data/History.rdoc +4 -0
- data/README.md +6 -6
- data/commander.gemspec +7 -0
- data/lib/commander/command.rb +3 -1
- data/lib/commander/runner.rb +1 -1
- data/lib/commander/version.rb +1 -1
- data/spec/command_spec.rb +27 -0
- data/spec/runner_spec.rb +42 -8
- data/spec/spec_helper.rb +10 -1
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81b7ddc3a162a5470bc710c813ae0c774bc120154029d1a4fcbc3dbe5ffc13b9
|
4
|
+
data.tar.gz: 1375cade2955ac64e702c982572406a7b4f5e3e6e983bc4d52e5a19521c19e05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf813e48a0d891a9998d96bf92a82d4e771d69a147fd1a45cb9af96f1bf1237050d9a7ba552f35cb27c78e48086fd93f3ea696d4d8207a2b9d025f084c91cf88
|
7
|
+
data.tar.gz: ab019b9db4e5dfe26fedea6bc611c8ac7162827fdb402c025b1e68b80b05d19c1ad0563b90b303c64820ed136b9259ce9fcda6b38f35254fe6ce4cee86b23349
|
data/History.rdoc
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
[<img src="https://api.travis-ci.org/commander-rb/commander.svg" alt="Build Status" />](
|
2
|
-
[
|
2
|
+
[](https://inch-ci.org/github/commander-rb/commander)
|
3
3
|
|
4
4
|
# Commander
|
5
5
|
|
@@ -243,8 +243,8 @@ end
|
|
243
243
|
## Growl Notifications
|
244
244
|
|
245
245
|
Commander provides methods for displaying Growl notifications. To use these
|
246
|
-
methods you need to install
|
247
|
-
the [growlnotify](
|
246
|
+
methods you need to install https://github.com/tj/growl which utilizes
|
247
|
+
the [growlnotify](https://growl.info/extras.php#growlnotify) executable. Note that
|
248
248
|
growl is auto-imported by Commander when available, no need to require.
|
249
249
|
|
250
250
|
```ruby
|
@@ -449,7 +449,7 @@ global_option '--config FILE'
|
|
449
449
|
|
450
450
|
## ASCII Tables
|
451
451
|
|
452
|
-
For feature rich ASCII tables for your terminal app check out the terminal-table gem at
|
452
|
+
For feature rich ASCII tables for your terminal app check out the terminal-table gem at https://github.com/tj/terminal-table
|
453
453
|
|
454
454
|
+----------+-------+----+--------+-----------------------+
|
455
455
|
| Terminal | Table | Is | Wicked | Awesome |
|
@@ -468,7 +468,7 @@ OR
|
|
468
468
|
## Contrib
|
469
469
|
|
470
470
|
Feel free to fork and request a pull, or submit a ticket
|
471
|
-
|
471
|
+
https://github.com/commander-rb/commander/issues
|
472
472
|
|
473
473
|
## License
|
474
474
|
|
data/commander.gemspec
CHANGED
@@ -12,6 +12,13 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.homepage = 'https://github.com/commander-rb/commander'
|
13
13
|
s.summary = 'The complete solution for Ruby command-line executables'
|
14
14
|
s.description = 'The complete solution for Ruby command-line executables. Commander bridges the gap between other terminal related libraries you know and love (OptionParser, HighLine), while providing many new features, and an elegant API.'
|
15
|
+
s.metadata = {
|
16
|
+
'bug_tracker_uri' => "#{s.homepage}/issues",
|
17
|
+
'changelog_uri' => "#{s.homepage}/blob/master/History.rdoc",
|
18
|
+
'documentation_uri' => "https://www.rubydoc.info/gems/commander/#{s.version}",
|
19
|
+
'homepage_uri' => s.homepage,
|
20
|
+
'source_code_uri' => "#{s.homepage}/tree/v#{s.version}",
|
21
|
+
}
|
15
22
|
|
16
23
|
s.files = `git ls-files`.split("\n")
|
17
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/commander/command.rb
CHANGED
@@ -4,6 +4,7 @@ module Commander
|
|
4
4
|
class Command
|
5
5
|
attr_accessor :name, :examples, :syntax, :description
|
6
6
|
attr_accessor :summary, :proxy_options, :options
|
7
|
+
attr_reader :global_options
|
7
8
|
|
8
9
|
##
|
9
10
|
# Options struct.
|
@@ -38,6 +39,7 @@ module Commander
|
|
38
39
|
def initialize(name)
|
39
40
|
@name, @examples, @when_called = name.to_s, [], []
|
40
41
|
@options, @proxy_options = [], []
|
42
|
+
@global_options = []
|
41
43
|
end
|
42
44
|
|
43
45
|
##
|
@@ -190,7 +192,7 @@ module Commander
|
|
190
192
|
# collected by the #option_proc.
|
191
193
|
|
192
194
|
def proxy_option_struct
|
193
|
-
proxy_options.each_with_object(Options.new) do |(option, value), options|
|
195
|
+
(global_options + proxy_options).each_with_object(Options.new) do |(option, value), options|
|
194
196
|
# options that are present will evaluate to true
|
195
197
|
value = true if value.nil?
|
196
198
|
options.__send__ :"#{option}=", value
|
data/lib/commander/runner.rb
CHANGED
@@ -395,7 +395,7 @@ module Commander
|
|
395
395
|
def global_option_proc(switches, &block)
|
396
396
|
lambda do |value|
|
397
397
|
unless active_command.nil?
|
398
|
-
active_command.
|
398
|
+
active_command.global_options << [Runner.switch_to_sym(switches.last), value]
|
399
399
|
end
|
400
400
|
yield value if block && !value.nil?
|
401
401
|
end
|
data/lib/commander/version.rb
CHANGED
data/spec/command_spec.rb
CHANGED
@@ -164,6 +164,33 @@ describe Commander::Command do
|
|
164
164
|
end
|
165
165
|
@command.run '--interval', '15'
|
166
166
|
end
|
167
|
+
|
168
|
+
describe 'given a global option' do
|
169
|
+
before do
|
170
|
+
@command.global_options << [:global_option, 'gvalue']
|
171
|
+
end
|
172
|
+
|
173
|
+
describe 'and no command specific arguments' do
|
174
|
+
it 'provides the global option to the command action' do
|
175
|
+
@command.when_called { |_, options| expect(options.global_option).to eq('gvalue') }
|
176
|
+
@command.run
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe 'and a command specific option' do
|
181
|
+
it 'provides the global option to the command action' do
|
182
|
+
@command.when_called { |_, options| expect(options.global_option).to eq('gvalue') }
|
183
|
+
@command.run '--verbose'
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe 'and a command specific argument' do
|
188
|
+
it 'provides the global option to the command action' do
|
189
|
+
@command.when_called { |_, options| expect(options.global_option).to eq('gvalue') }
|
190
|
+
@command.run 'argument'
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
167
194
|
end
|
168
195
|
end
|
169
196
|
end
|
data/spec/runner_spec.rb
CHANGED
@@ -132,6 +132,40 @@ describe Commander do
|
|
132
132
|
end.run!
|
133
133
|
expect(quiet).to be false
|
134
134
|
end
|
135
|
+
|
136
|
+
it 'should allow command arguments before the global option' do
|
137
|
+
config = nil
|
138
|
+
args = nil
|
139
|
+
new_command_runner 'foo', '--config', 'config-value', 'arg1', 'arg2' do
|
140
|
+
global_option('-c', '--config CONFIG', String)
|
141
|
+
command :foo do |c|
|
142
|
+
c.when_called do |arguments, options|
|
143
|
+
options.default(config: 'default')
|
144
|
+
args = arguments
|
145
|
+
config = options.config
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end.run!
|
149
|
+
expect(config).to eq('config-value')
|
150
|
+
expect(args).to eq(%w(arg1 arg2))
|
151
|
+
end
|
152
|
+
|
153
|
+
it 'should allow command arguments after the global option' do
|
154
|
+
config = nil
|
155
|
+
args = nil
|
156
|
+
new_command_runner 'foo', 'arg1', 'arg2', '--config', 'config-value' do
|
157
|
+
global_option('-c', '--config CONFIG', String)
|
158
|
+
command :foo do |c|
|
159
|
+
c.when_called do |arguments, options|
|
160
|
+
options.default(config: 'default')
|
161
|
+
args = arguments
|
162
|
+
config = options.config
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end.run!
|
166
|
+
expect(config).to eq('config-value')
|
167
|
+
expect(args).to eq(%w(arg1 arg2))
|
168
|
+
end
|
135
169
|
end
|
136
170
|
|
137
171
|
describe '#parse_global_options' do
|
@@ -334,7 +368,7 @@ describe Commander do
|
|
334
368
|
new_command_runner 'foo' do
|
335
369
|
command(:foo) { |c| c.when_called { fail 'cookies!' } }
|
336
370
|
end.run!
|
337
|
-
end.to raise_error(
|
371
|
+
end.to raise_error(TestSystemExit, /error: cookies!. Use --trace/)
|
338
372
|
end
|
339
373
|
|
340
374
|
it 'should display callstack when using this switch' do
|
@@ -363,7 +397,7 @@ describe Commander do
|
|
363
397
|
new_command_runner 'help', '--trace' do
|
364
398
|
never_trace!
|
365
399
|
end.run!
|
366
|
-
end.to raise_error(
|
400
|
+
end.to raise_error(TestSystemExit, /invalid option: --trace/)
|
367
401
|
end
|
368
402
|
|
369
403
|
it 'should not prompt to use --trace switch on errors' do
|
@@ -373,7 +407,7 @@ describe Commander do
|
|
373
407
|
never_trace!
|
374
408
|
command(:foo) { |c| c.when_called { fail 'cookies!' } }
|
375
409
|
end.run!
|
376
|
-
rescue
|
410
|
+
rescue TestSystemExit => e
|
377
411
|
msg = e.message
|
378
412
|
end
|
379
413
|
expect(msg).to match(/error: cookies!/)
|
@@ -430,7 +464,7 @@ describe Commander do
|
|
430
464
|
it 'should output an invalid option message' do
|
431
465
|
expect do
|
432
466
|
run('test', '--invalid-option')
|
433
|
-
end.to raise_error(
|
467
|
+
end.to raise_error(TestSystemExit, /invalid option: --invalid-option/)
|
434
468
|
end
|
435
469
|
end
|
436
470
|
|
@@ -438,7 +472,7 @@ describe Commander do
|
|
438
472
|
it 'should output an invalid command message' do
|
439
473
|
expect do
|
440
474
|
run('foo')
|
441
|
-
end.to raise_error(
|
475
|
+
end.to raise_error(TestSystemExit, /invalid command. Use --help for more information/)
|
442
476
|
end
|
443
477
|
end
|
444
478
|
|
@@ -446,7 +480,7 @@ describe Commander do
|
|
446
480
|
it 'should output an invalid command message' do
|
447
481
|
expect do
|
448
482
|
run('help', 'does_not_exist')
|
449
|
-
end.to raise_error(
|
483
|
+
end.to raise_error(TestSystemExit, /invalid command. Use --help for more information/)
|
450
484
|
end
|
451
485
|
end
|
452
486
|
|
@@ -454,7 +488,7 @@ describe Commander do
|
|
454
488
|
it 'should output an invalid command message' do
|
455
489
|
expect do
|
456
490
|
run('--help', 'does_not_exist')
|
457
|
-
end.to raise_error(
|
491
|
+
end.to raise_error(TestSystemExit, /invalid command. Use --help for more information/)
|
458
492
|
end
|
459
493
|
end
|
460
494
|
|
@@ -462,7 +496,7 @@ describe Commander do
|
|
462
496
|
it 'should output an invalid option message' do
|
463
497
|
expect do
|
464
498
|
run('--help', 'test', '--invalid-option')
|
465
|
-
end.to raise_error(
|
499
|
+
end.to raise_error(TestSystemExit, /invalid option: --invalid-option/)
|
466
500
|
end
|
467
501
|
end
|
468
502
|
|
data/spec/spec_helper.rb
CHANGED
@@ -14,13 +14,22 @@ require 'commander'
|
|
14
14
|
require 'commander/methods'
|
15
15
|
|
16
16
|
# Mock terminal IO streams so we can spec against them
|
17
|
-
|
18
17
|
def mock_terminal
|
19
18
|
@input = StringIO.new
|
20
19
|
@output = StringIO.new
|
21
20
|
HighLine.default_instance = HighLine.new(@input, @output)
|
22
21
|
end
|
23
22
|
|
23
|
+
# Stub Kernel.abort
|
24
|
+
TestSystemExit = Class.new(RuntimeError)
|
25
|
+
module Commander
|
26
|
+
class Runner
|
27
|
+
def abort(message)
|
28
|
+
fail TestSystemExit, message
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
24
33
|
# Create test command for usage within several specs
|
25
34
|
|
26
35
|
def create_test_command
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: commander
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.5.
|
4
|
+
version: 4.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TJ Holowaychuk
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-03-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: highline
|
@@ -140,7 +140,12 @@ files:
|
|
140
140
|
homepage: https://github.com/commander-rb/commander
|
141
141
|
licenses:
|
142
142
|
- MIT
|
143
|
-
metadata:
|
143
|
+
metadata:
|
144
|
+
bug_tracker_uri: https://github.com/commander-rb/commander/issues
|
145
|
+
changelog_uri: https://github.com/commander-rb/commander/blob/master/History.rdoc
|
146
|
+
documentation_uri: https://www.rubydoc.info/gems/commander/4.5.1
|
147
|
+
homepage_uri: https://github.com/commander-rb/commander
|
148
|
+
source_code_uri: https://github.com/commander-rb/commander/tree/v4.5.1
|
144
149
|
post_install_message:
|
145
150
|
rdoc_options: []
|
146
151
|
require_paths:
|
@@ -156,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
161
|
- !ruby/object:Gem::Version
|
157
162
|
version: '0'
|
158
163
|
requirements: []
|
159
|
-
rubygems_version: 3.0.
|
164
|
+
rubygems_version: 3.0.6
|
160
165
|
signing_key:
|
161
166
|
specification_version: 4
|
162
167
|
summary: The complete solution for Ruby command-line executables
|