cri 2.4.0 → 2.4.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 +9 -9
- data/Gemfile.lock +1 -1
- data/NEWS.md +6 -0
- data/cri.gemspec +3 -2
- data/lib/cri/command.rb +15 -19
- data/lib/cri/version.rb +1 -1
- data/test/test_command.rb +24 -8
- metadata +5 -7
- data/.gemtest +0 -0
- data/ChangeLog +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmEyNjRhYjcyOTg2MzdiNWM1MDA5OWJiYTM0ZWNiMGIzYWM1ZjAxNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
7
|
-
|
6
|
+
MGUyZjJjNjdkMGY2ZjAxYWZjYzdjMzgzMTAzOWZiMzgwZWYzYTkzOA==
|
7
|
+
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjhlMjE2ODU5OTNiODMxZTY4ZGFlMzA3YjM0OGY3MDRiYmI2MzUwMjNhMTY1
|
10
|
+
YmY2YTZkODk2NGEyNjYwMmZiOTM0ZjQ2ZDQ3YWE5NDIxMWNkZGZhY2UzNjVk
|
11
|
+
MmJmNDI0ZjYwMDQ5ODYyNzE4N2QwNjQ3NzVlMTJmZmZlZTFlODg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OGZjNzRmYzk5ZmYzMmVhZDlhOTcyM2IzOGY2OTZhOWQ5YmFmMzdjODZmYzk2
|
14
|
+
MjhmMDkzOTQ3Yjc2Mzc4MjExMTg4ZjU4ZTM5N2YzNTgwZWViMTgxZTdjZjJl
|
15
|
+
NTYxYWJjOGE5ZDM2MWY3NzQ2M2FjYWU0NjEyNGY3YmZmOGQ5MmI=
|
data/Gemfile.lock
CHANGED
data/NEWS.md
CHANGED
data/cri.gemspec
CHANGED
@@ -9,13 +9,14 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.homepage = 'http://stoneship.org/software/cri/' # TODO CREATE A WEB SITE YOU SILLY PERSON
|
10
10
|
s.summary = 'a library for building easy-to-use commandline tools'
|
11
11
|
s.description = 'Cri allows building easy-to-use commandline interfaces with support for subcommands.'
|
12
|
+
s.license = 'MIT'
|
12
13
|
|
13
14
|
s.author = 'Denis Defreyne'
|
14
15
|
s.email = 'denis.defreyne@stoneship.org'
|
15
16
|
|
16
17
|
s.files = Dir['[A-Z]*'] +
|
17
18
|
Dir['{lib,test}/**/*'] +
|
18
|
-
[ 'cri.gemspec'
|
19
|
+
[ 'cri.gemspec' ]
|
19
20
|
s.require_paths = [ 'lib' ]
|
20
21
|
|
21
22
|
s.add_dependency('colored', '>= 1.2')
|
@@ -25,5 +26,5 @@ Gem::Specification.new do |s|
|
|
25
26
|
s.add_development_dependency('yard')
|
26
27
|
|
27
28
|
s.rdoc_options = [ '--main', 'README.md' ]
|
28
|
-
s.extra_rdoc_files = [ '
|
29
|
+
s.extra_rdoc_files = [ 'LICENSE', 'README.md', 'NEWS.md' ]
|
29
30
|
end
|
data/lib/cri/command.rb
CHANGED
@@ -90,7 +90,9 @@ module Cri
|
|
90
90
|
# context with the command DSL as its parameter. If the block has no
|
91
91
|
# parameters, the block will be executed in the context of the DSL.
|
92
92
|
#
|
93
|
-
# @param [String, nil] The
|
93
|
+
# @param [String, nil] string The command definition as a string
|
94
|
+
#
|
95
|
+
# @param [String, nil] filename The filename corresponding to the string parameter (only useful if a string is given)
|
94
96
|
#
|
95
97
|
# @return [Cri::Command] The newly defined command
|
96
98
|
def self.define(string=nil, filename=nil, &block)
|
@@ -336,32 +338,25 @@ module Cri
|
|
336
338
|
text << (self.supercommand ? 'subcommands' : 'commands').formatted_as_title
|
337
339
|
text << "\n"
|
338
340
|
|
339
|
-
|
340
|
-
|
341
|
-
commands_for_length = is_verbose ? self.subcommands : visible_cmds
|
342
|
-
length = commands_for_length.map { |c| c.name.formatted_as_command.size }.max
|
341
|
+
shown_subcommands = self.subcommands.select { |c| !c.hidden? || is_verbose }
|
342
|
+
length = shown_subcommands.map { |c| c.name.formatted_as_command.size }.max
|
343
343
|
|
344
|
-
#
|
345
|
-
|
344
|
+
# Command
|
345
|
+
shown_subcommands.sort_by { |cmd| cmd.name }.each do |cmd|
|
346
346
|
text << sprintf(" %-#{length+4}s %s\n",
|
347
347
|
cmd.name.formatted_as_command,
|
348
348
|
cmd.summary)
|
349
349
|
end
|
350
350
|
|
351
|
-
#
|
352
|
-
if is_verbose
|
353
|
-
|
354
|
-
|
355
|
-
cmd.name.formatted_as_command,
|
356
|
-
cmd.summary)
|
357
|
-
end
|
358
|
-
else
|
359
|
-
case invisible_cmds.size
|
351
|
+
# Hidden notice
|
352
|
+
if !is_verbose
|
353
|
+
diff = self.subcommands.size - shown_subcommands.size
|
354
|
+
case diff
|
360
355
|
when 0
|
361
356
|
when 1
|
362
|
-
text << " (1 hidden command
|
357
|
+
text << " (1 hidden command omitted; show it with --verbose)\n"
|
363
358
|
else
|
364
|
-
text << " (#{
|
359
|
+
text << " (#{diff} hidden commands omitted; show them with --verbose)\n"
|
365
360
|
end
|
366
361
|
end
|
367
362
|
end
|
@@ -372,7 +367,8 @@ module Cri
|
|
372
367
|
groups["options for #{self.supercommand.name}"] = self.supercommand.global_option_definitions
|
373
368
|
end
|
374
369
|
length = groups.values.inject(&:+).map { |o| o[:long].to_s.size }.max
|
375
|
-
groups.
|
370
|
+
groups.keys.sort.each do |name|
|
371
|
+
defs = groups[name]
|
376
372
|
unless defs.empty?
|
377
373
|
text << "\n"
|
378
374
|
text << "#{name}".formatted_as_title
|
data/lib/cri/version.rb
CHANGED
data/test/test_command.rb
CHANGED
@@ -276,6 +276,12 @@ class Cri::CommandTestCase < Cri::TestCase
|
|
276
276
|
assert_match(/^\e\[33m -s \e\[0mshort$/, help)
|
277
277
|
end
|
278
278
|
|
279
|
+
def test_help_with_multiple_groups
|
280
|
+
help = nested_cmd.subcommands.find { |cmd| cmd.name == 'sub' }.help
|
281
|
+
|
282
|
+
assert_match(/OPTIONS.*OPTIONS FOR SUPER/m, help)
|
283
|
+
end
|
284
|
+
|
279
285
|
def test_modify_with_block_argument
|
280
286
|
cmd = Cri::Command.define do |c|
|
281
287
|
c.name 'build'
|
@@ -369,18 +375,25 @@ class Cri::CommandTestCase < Cri::TestCase
|
|
369
375
|
c.be_hidden
|
370
376
|
end
|
371
377
|
|
372
|
-
refute cmd.help.include?('hidden commands
|
373
|
-
assert cmd.help.include?('hidden command
|
378
|
+
refute cmd.help.include?('hidden commands omitted')
|
379
|
+
assert cmd.help.include?('hidden command omitted')
|
374
380
|
refute cmd.help.include?('old-and-deprecated')
|
375
381
|
|
376
|
-
refute cmd.help(:verbose => true).include?('hidden commands
|
377
|
-
refute cmd.help(:verbose => true).include?('hidden command
|
382
|
+
refute cmd.help(:verbose => true).include?('hidden commands omitted')
|
383
|
+
refute cmd.help(:verbose => true).include?('hidden command omitted')
|
378
384
|
assert cmd.help(:verbose => true).include?('old-and-deprecated')
|
379
385
|
end
|
380
386
|
|
381
387
|
def test_hidden_commands_multiple
|
382
388
|
cmd = nested_cmd
|
383
389
|
|
390
|
+
subcmd = simple_cmd
|
391
|
+
cmd.add_command subcmd
|
392
|
+
subcmd.modify do |c|
|
393
|
+
c.name 'first'
|
394
|
+
c.summary 'does stuff first'
|
395
|
+
end
|
396
|
+
|
384
397
|
subcmd = simple_cmd
|
385
398
|
cmd.add_command subcmd
|
386
399
|
subcmd.modify do |c|
|
@@ -397,15 +410,18 @@ class Cri::CommandTestCase < Cri::TestCase
|
|
397
410
|
c.be_hidden
|
398
411
|
end
|
399
412
|
|
400
|
-
assert cmd.help.include?('hidden commands
|
401
|
-
refute cmd.help.include?('hidden command
|
413
|
+
assert cmd.help.include?('hidden commands omitted')
|
414
|
+
refute cmd.help.include?('hidden command omitted')
|
402
415
|
refute cmd.help.include?('old-and-deprecated')
|
403
416
|
refute cmd.help.include?('ancient-and-deprecated')
|
404
417
|
|
405
|
-
refute cmd.help(:verbose => true).include?('hidden commands
|
406
|
-
refute cmd.help(:verbose => true).include?('hidden command
|
418
|
+
refute cmd.help(:verbose => true).include?('hidden commands omitted')
|
419
|
+
refute cmd.help(:verbose => true).include?('hidden command omitted')
|
407
420
|
assert cmd.help(:verbose => true).include?('old-and-deprecated')
|
408
421
|
assert cmd.help(:verbose => true).include?('ancient-and-deprecated')
|
422
|
+
|
423
|
+
pattern = /ancient-and-deprecated.*first.*old-and-deprecated/m
|
424
|
+
assert_match(pattern, cmd.help(:verbose => true))
|
409
425
|
end
|
410
426
|
|
411
427
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Defreyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored
|
@@ -72,12 +72,10 @@ email: denis.defreyne@stoneship.org
|
|
72
72
|
executables: []
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files:
|
75
|
-
- ChangeLog
|
76
75
|
- LICENSE
|
77
76
|
- README.md
|
78
77
|
- NEWS.md
|
79
78
|
files:
|
80
|
-
- ChangeLog
|
81
79
|
- Gemfile
|
82
80
|
- Gemfile.lock
|
83
81
|
- LICENSE
|
@@ -103,9 +101,9 @@ files:
|
|
103
101
|
- test/test_core_ext.rb
|
104
102
|
- test/test_option_parser.rb
|
105
103
|
- cri.gemspec
|
106
|
-
- .gemtest
|
107
104
|
homepage: http://stoneship.org/software/cri/
|
108
|
-
licenses:
|
105
|
+
licenses:
|
106
|
+
- MIT
|
109
107
|
metadata: {}
|
110
108
|
post_install_message:
|
111
109
|
rdoc_options:
|
@@ -125,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
123
|
version: '0'
|
126
124
|
requirements: []
|
127
125
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.1.11
|
129
127
|
signing_key:
|
130
128
|
specification_version: 4
|
131
129
|
summary: a library for building easy-to-use commandline tools
|
data/.gemtest
DELETED
File without changes
|
data/ChangeLog
DELETED
File without changes
|