cri 2.3.0 → 2.4.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.
- checksums.yaml +15 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +22 -0
- data/NEWS.md +7 -0
- data/README.md +13 -9
- data/Rakefile +2 -1
- data/cri.gemspec +5 -1
- data/lib/cri.rb +1 -3
- data/lib/cri/command.rb +7 -6
- data/lib/cri/command_dsl.rb +14 -10
- data/lib/cri/core_ext/string.rb +4 -2
- data/lib/cri/option_parser.rb +6 -5
- data/lib/cri/version.rb +6 -0
- data/test/helper.rb +1 -1
- data/test/test_command.rb +13 -0
- data/test/test_command_dsl.rb +42 -0
- data/test/test_core_ext.rb +33 -9
- metadata +50 -9
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OWExM2ZhMjgwODJmMmVhMGU5ZTg2YTQzN2EwYTgwYjI2NzM3MzRhYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NTJjOWQ4ZDZjOGEzZmUzMDg4ZGQ4NzIyMWQ4NDQ5MTcyZjI4NWNkOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YjU3YTNjYWMyZDI3ZTM5Y2FkMGY1NDQ4YTcxYWU1YWNlYmEwNDg1YWE2ODhi
|
10
|
+
OGNhZjdiOGMyZGQ2MzUwOWZjMmQxNDVjYjAyYWM3ZTFhYjE4NzEwNzUzYjk4
|
11
|
+
N2RlMDdkM2IzYWU4MGRhNDExMTFkZmY5NWYzYWNhNmM1OTgzMGE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjUzMWY0NjY2ZTU5ZmE3ZGZjMWMzMjQ0OGE2ZGRlMzFkOTE4NTIyODcwNDU4
|
14
|
+
MTkyZGRlMjNmNmY1MzVmMmJlNzVhZmQ0N2E2ZmYyMjcxYmU2M2NhYzVhMWU2
|
15
|
+
MmI1ZGQyNWQ0NjU1ZmU0NDEzNjdhMjA0ZTEwMjFkYTM4YTQ0MDg=
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cri (2.4.0)
|
5
|
+
colored (>= 1.2)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
colored (1.2)
|
11
|
+
minitest (5.0.6)
|
12
|
+
rake (10.1.0)
|
13
|
+
yard (0.8.7)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
cri!
|
20
|
+
minitest
|
21
|
+
rake
|
22
|
+
yard
|
data/NEWS.md
CHANGED
data/README.md
CHANGED
@@ -20,12 +20,12 @@ Here’s a sample command definition:
|
|
20
20
|
summary 'does stuff'
|
21
21
|
description 'This command does a lot of stuff. I really mean a lot.'
|
22
22
|
|
23
|
-
flag :h,
|
23
|
+
flag :h, :help, 'show help for this command' do |value, cmd|
|
24
24
|
puts cmd.help
|
25
25
|
exit 0
|
26
26
|
end
|
27
|
-
flag
|
28
|
-
option :s,
|
27
|
+
flag nil, :more, 'do even more stuff'
|
28
|
+
option :s, :stuff, 'specify stuff to do', :argument => :required
|
29
29
|
|
30
30
|
run do |opts, args, cmd|
|
31
31
|
stuff = opts[:stuff] || 'generic stuff'
|
@@ -55,7 +55,7 @@ Each command has automatically generated help. This help can be printed using
|
|
55
55
|
options:
|
56
56
|
|
57
57
|
-h --help show help for this command
|
58
|
-
|
58
|
+
--more do even more stuff
|
59
59
|
-s --stuff specify stuff to do
|
60
60
|
|
61
61
|
Let’s disect the command definition and start with the first five lines:
|
@@ -76,12 +76,12 @@ Aliases don’t make sense for root commands, but for subcommands they do.
|
|
76
76
|
|
77
77
|
The next few lines contain the command’s option definitions:
|
78
78
|
|
79
|
-
flag :h,
|
79
|
+
flag :h, :help, 'show help for this command' do |value, cmd|
|
80
80
|
puts cmd.help
|
81
81
|
exit 0
|
82
82
|
end
|
83
|
-
flag
|
84
|
-
option :s,
|
83
|
+
flag nil, :more, 'do even more stuff'
|
84
|
+
option :s, :stuff, 'specify stuff to do', :argument => :required
|
85
85
|
|
86
86
|
Options can be defined using the following methods:
|
87
87
|
|
@@ -90,6 +90,11 @@ Options can be defined using the following methods:
|
|
90
90
|
* {Cri::CommandDSL#required} (implies required argument)
|
91
91
|
* {Cri::CommandDSL#optional} (implies optional argument)
|
92
92
|
|
93
|
+
All these methods take the short option form as their first argument, and a
|
94
|
+
long option form as their second argument. Either the short or the long form
|
95
|
+
can be nil, but not both (because that would not make any sense). In the
|
96
|
+
example above, the `--more` option has no short form.
|
97
|
+
|
93
98
|
Each of the above methods also take a block, which will be executed when the
|
94
99
|
option is found. The argument to the block are the option value (`true` in
|
95
100
|
case the option does not have an argument) and the command.
|
@@ -125,9 +130,8 @@ To add a command as a subcommand to another command, use the {Cri::Command#add_c
|
|
125
130
|
Contributors
|
126
131
|
------------
|
127
132
|
|
128
|
-
(In alphabetical order)
|
129
|
-
|
130
133
|
* Toon Willems
|
134
|
+
* Ken Coar
|
131
135
|
|
132
136
|
Thanks for Lee “injekt” Jarvis for [Slop][1], which has inspired the design of Cri 2.0.
|
133
137
|
|
data/Rakefile
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
# Rake etc
|
6
6
|
require 'rake'
|
7
|
+
require 'minitest'
|
7
8
|
require 'minitest/unit'
|
8
9
|
|
9
10
|
# Cri itself
|
@@ -32,7 +33,7 @@ task :test do
|
|
32
33
|
|
33
34
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
|
34
35
|
|
35
|
-
MiniTest
|
36
|
+
MiniTest.autorun
|
36
37
|
|
37
38
|
require 'test/helper.rb'
|
38
39
|
|
data/cri.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path('../lib/', __FILE__))
|
4
|
-
require 'cri'
|
4
|
+
require 'cri/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = 'cri'
|
@@ -20,6 +20,10 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_dependency('colored', '>= 1.2')
|
22
22
|
|
23
|
+
s.add_development_dependency('rake')
|
24
|
+
s.add_development_dependency('minitest')
|
25
|
+
s.add_development_dependency('yard')
|
26
|
+
|
23
27
|
s.rdoc_options = [ '--main', 'README.md' ]
|
24
28
|
s.extra_rdoc_files = [ 'ChangeLog', 'LICENSE', 'README.md', 'NEWS.md' ]
|
25
29
|
end
|
data/lib/cri.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
require 'cri/version'
|
2
3
|
|
3
4
|
module Cri
|
4
5
|
|
@@ -16,9 +17,6 @@ module Cri
|
|
16
17
|
class NoHelpAvailableError < Error
|
17
18
|
end
|
18
19
|
|
19
|
-
# The current Cri version.
|
20
|
-
VERSION = '2.3.0'
|
21
|
-
|
22
20
|
autoload 'Command', 'cri/command'
|
23
21
|
autoload 'CommandDSL', 'cri/command_dsl'
|
24
22
|
autoload 'CommandRunner', 'cri/command_runner'
|
data/lib/cri/command.rb
CHANGED
@@ -371,17 +371,18 @@ module Cri
|
|
371
371
|
if self.supercommand
|
372
372
|
groups["options for #{self.supercommand.name}"] = self.supercommand.global_option_definitions
|
373
373
|
end
|
374
|
-
length = groups.values.inject(&:+).map { |o| o[:long].size }.max
|
374
|
+
length = groups.values.inject(&:+).map { |o| o[:long].to_s.size }.max
|
375
375
|
groups.each_pair do |name, defs|
|
376
376
|
unless defs.empty?
|
377
377
|
text << "\n"
|
378
378
|
text << "#{name}".formatted_as_title
|
379
379
|
text << "\n"
|
380
|
-
defs.
|
380
|
+
ordered_defs = defs.sort_by { |x| x[:short] || x[:long] }
|
381
|
+
ordered_defs.each do |opt_def|
|
381
382
|
text << sprintf(
|
382
|
-
"
|
383
|
-
opt_def[:short],
|
384
|
-
opt_def[:long]).formatted_as_option
|
383
|
+
" %-2s %-#{length+6}s",
|
384
|
+
opt_def[:short] ? ('-' + opt_def[:short]) : '',
|
385
|
+
opt_def[:long] ? ('--' + opt_def[:long]) : '').formatted_as_option
|
385
386
|
|
386
387
|
text << opt_def[:desc] << "\n"
|
387
388
|
end
|
@@ -400,7 +401,7 @@ module Cri
|
|
400
401
|
|
401
402
|
def handle_options(opts)
|
402
403
|
opts.each_pair do |key, value|
|
403
|
-
opt_def = global_option_definitions.find { |o| o[:long] == key.to_s }
|
404
|
+
opt_def = global_option_definitions.find { |o| (o[:long] || o[:short]) == key.to_s }
|
404
405
|
block = opt_def[:block]
|
405
406
|
block.call(value, self) if block
|
406
407
|
end
|
data/lib/cri/command_dsl.rb
CHANGED
@@ -92,9 +92,9 @@ module Cri
|
|
92
92
|
# Adds a new option to the command. If a block is given, it will be
|
93
93
|
# executed when the option is successfully parsed.
|
94
94
|
#
|
95
|
-
# @param [String, Symbol] short The short option name
|
95
|
+
# @param [String, Symbol, nil] short The short option name
|
96
96
|
#
|
97
|
-
# @param [String, Symbol] long The long option name
|
97
|
+
# @param [String, Symbol, nil] long The long option name
|
98
98
|
#
|
99
99
|
# @param [String] desc The option description
|
100
100
|
#
|
@@ -111,9 +111,9 @@ module Cri
|
|
111
111
|
# Adds a new option with a required argument to the command. If a block is
|
112
112
|
# given, it will be executed when the option is successfully parsed.
|
113
113
|
#
|
114
|
-
# @param [String, Symbol] short The short option name
|
114
|
+
# @param [String, Symbol, nil] short The short option name
|
115
115
|
#
|
116
|
-
# @param [String, Symbol] long The long option name
|
116
|
+
# @param [String, Symbol, nil] long The long option name
|
117
117
|
#
|
118
118
|
# @param [String] desc The option description
|
119
119
|
#
|
@@ -127,9 +127,9 @@ module Cri
|
|
127
127
|
# Adds a new option with a forbidden argument to the command. If a block
|
128
128
|
# is given, it will be executed when the option is successfully parsed.
|
129
129
|
#
|
130
|
-
# @param [String, Symbol] short The short option name
|
130
|
+
# @param [String, Symbol, nil] short The short option name
|
131
131
|
#
|
132
|
-
# @param [String, Symbol] long The long option name
|
132
|
+
# @param [String, Symbol, nil] long The long option name
|
133
133
|
#
|
134
134
|
# @param [String] desc The option description
|
135
135
|
#
|
@@ -144,9 +144,9 @@ module Cri
|
|
144
144
|
# Adds a new option with an optional argument to the command. If a block
|
145
145
|
# is given, it will be executed when the option is successfully parsed.
|
146
146
|
#
|
147
|
-
# @param [String, Symbol] short The short option name
|
147
|
+
# @param [String, Symbol, nil] short The short option name
|
148
148
|
#
|
149
|
-
# @param [String, Symbol] long The long option name
|
149
|
+
# @param [String, Symbol, nil] long The long option name
|
150
150
|
#
|
151
151
|
# @param [String] desc The option description
|
152
152
|
#
|
@@ -189,9 +189,13 @@ module Cri
|
|
189
189
|
protected
|
190
190
|
|
191
191
|
def add_option(short, long, desc, argument, block)
|
192
|
+
if short.nil? && long.nil?
|
193
|
+
raise ArgumentError, "short and long options cannot both be nil"
|
194
|
+
end
|
195
|
+
|
192
196
|
@command.option_definitions << {
|
193
|
-
:short => short.to_s,
|
194
|
-
:long => long.to_s,
|
197
|
+
:short => short.nil? ? nil : short.to_s,
|
198
|
+
:long => long.nil? ? nil : long.to_s,
|
195
199
|
:desc => desc,
|
196
200
|
:argument => argument,
|
197
201
|
:block => block }
|
data/lib/cri/core_ext/string.rb
CHANGED
@@ -33,6 +33,8 @@ module Cri::CoreExtensions
|
|
33
33
|
#
|
34
34
|
# @return [String] The word-wrapped and indented string
|
35
35
|
def wrap_and_indent(width, indentation)
|
36
|
+
indented_width = width - indentation
|
37
|
+
indent = ' ' * indentation
|
36
38
|
# Split into paragraphs
|
37
39
|
paragraphs = self.to_paragraphs
|
38
40
|
|
@@ -45,7 +47,7 @@ module Cri::CoreExtensions
|
|
45
47
|
# Split into words
|
46
48
|
paragraph.split(/\s/).each do |word|
|
47
49
|
# Begin new line if it's too long
|
48
|
-
if (line + ' ' + word).length >=
|
50
|
+
if (line + ' ' + word).length >= indented_width
|
49
51
|
lines << line
|
50
52
|
line = ''
|
51
53
|
end
|
@@ -56,7 +58,7 @@ module Cri::CoreExtensions
|
|
56
58
|
lines << line
|
57
59
|
|
58
60
|
# Join lines
|
59
|
-
lines.map { |l|
|
61
|
+
lines.map { |l| indent + l }.join("\n")
|
60
62
|
end.join("\n\n")
|
61
63
|
end
|
62
64
|
|
data/lib/cri/option_parser.rb
CHANGED
@@ -194,10 +194,10 @@ module Cri
|
|
194
194
|
end
|
195
195
|
|
196
196
|
# Store option
|
197
|
-
add_option(definition
|
197
|
+
add_option(definition, option_value)
|
198
198
|
else
|
199
199
|
# Store option
|
200
|
-
add_option(definition
|
200
|
+
add_option(definition, true)
|
201
201
|
end
|
202
202
|
# Handle -xyz options
|
203
203
|
elsif e =~ /^-./ and !@no_more_options
|
@@ -226,10 +226,10 @@ module Cri
|
|
226
226
|
end
|
227
227
|
|
228
228
|
# Store option
|
229
|
-
add_option(definition
|
229
|
+
add_option(definition, option_value)
|
230
230
|
else
|
231
231
|
# Store option
|
232
|
-
add_option(definition
|
232
|
+
add_option(definition, true)
|
233
233
|
end
|
234
234
|
end
|
235
235
|
# Handle normal arguments
|
@@ -244,7 +244,8 @@ module Cri
|
|
244
244
|
|
245
245
|
private
|
246
246
|
|
247
|
-
def add_option(
|
247
|
+
def add_option(definition, value)
|
248
|
+
key = (definition[:long] || definition[:short]).to_sym
|
248
249
|
options[key] = value
|
249
250
|
delegate.option_added(key, value, self) unless delegate.nil?
|
250
251
|
end
|
data/lib/cri/version.rb
ADDED
data/test/helper.rb
CHANGED
data/test/test_command.rb
CHANGED
@@ -263,6 +263,19 @@ class Cri::CommandTestCase < Cri::TestCase
|
|
263
263
|
bare_cmd.help
|
264
264
|
end
|
265
265
|
|
266
|
+
def test_help_with_optional_options
|
267
|
+
cmd = Cri::Command.define do
|
268
|
+
name 'build'
|
269
|
+
flag :s, nil, 'short'
|
270
|
+
flag nil, :long, 'long'
|
271
|
+
end
|
272
|
+
help = cmd.help
|
273
|
+
|
274
|
+
assert_match(/--long.*-s/m, help)
|
275
|
+
assert_match(/^\e\[33m --long \e\[0mlong$/, help)
|
276
|
+
assert_match(/^\e\[33m -s \e\[0mshort$/, help)
|
277
|
+
end
|
278
|
+
|
266
279
|
def test_modify_with_block_argument
|
267
280
|
cmd = Cri::Command.define do |c|
|
268
281
|
c.name 'build'
|
data/test/test_command_dsl.rb
CHANGED
@@ -46,6 +46,48 @@ class Cri::CommandDSLTestCase < Cri::TestCase
|
|
46
46
|
assert_equal expected_option_definitions, actual_option_definitions
|
47
47
|
end
|
48
48
|
|
49
|
+
def test_optional_options
|
50
|
+
# Define
|
51
|
+
dsl = Cri::CommandDSL.new
|
52
|
+
dsl.instance_eval do
|
53
|
+
name 'moo'
|
54
|
+
usage 'dunno whatever'
|
55
|
+
summary 'does stuff'
|
56
|
+
description 'This command does a lot of stuff.'
|
57
|
+
|
58
|
+
flag :s, nil, 'short'
|
59
|
+
flag nil, :long, 'long'
|
60
|
+
|
61
|
+
run do |opts, args|
|
62
|
+
$did_it_work = :probably
|
63
|
+
end
|
64
|
+
end
|
65
|
+
command = dsl.command
|
66
|
+
|
67
|
+
# Run
|
68
|
+
$did_it_work = :sadly_not
|
69
|
+
command.run(%w( -s --long ))
|
70
|
+
assert_equal :probably, $did_it_work
|
71
|
+
|
72
|
+
# Check options
|
73
|
+
expected_option_definitions = Set.new([
|
74
|
+
{ :short => 's', :long => nil, :desc => 'short', :argument => :forbidden, :block => nil },
|
75
|
+
{ :short => nil, :long => 'long', :desc => 'long', :argument => :forbidden, :block => nil }
|
76
|
+
])
|
77
|
+
actual_option_definitions = Set.new(command.option_definitions)
|
78
|
+
assert_equal expected_option_definitions, actual_option_definitions
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_optional_options
|
82
|
+
# Define
|
83
|
+
dsl = Cri::CommandDSL.new
|
84
|
+
assert_raises ArgumentError do
|
85
|
+
dsl.instance_eval do
|
86
|
+
flag nil, nil, 'meh'
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
49
91
|
def test_subcommand
|
50
92
|
# Define
|
51
93
|
dsl = Cri::CommandDSL.new
|
data/test/test_core_ext.rb
CHANGED
@@ -15,7 +15,7 @@ class Cri::CoreExtTestCase < Cri::TestCase
|
|
15
15
|
|
16
16
|
def test_string_wrap_and_indent_without_indent
|
17
17
|
original = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " +
|
18
|
-
"sed do eiusmod tempor incididunt ut labore et dolore " +
|
18
|
+
"sed do eiusmod tempor incididunt ut labore et dolore " +
|
19
19
|
"magna aliqua."
|
20
20
|
|
21
21
|
expected = "Lorem ipsum dolor sit amet, consectetur\n" +
|
@@ -29,27 +29,51 @@ class Cri::CoreExtTestCase < Cri::TestCase
|
|
29
29
|
|
30
30
|
def test_string_wrap_and_indent_with_indent
|
31
31
|
original = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " +
|
32
|
-
"sed do eiusmod tempor incididunt ut labore et dolore " +
|
32
|
+
"sed do eiusmod tempor incididunt ut labore et dolore " +
|
33
33
|
"magna aliqua."
|
34
34
|
|
35
35
|
expected = " Lorem ipsum dolor sit amet,\n" +
|
36
|
-
" consectetur adipisicing elit
|
37
|
-
" do eiusmod tempor
|
38
|
-
" labore et dolore
|
36
|
+
" consectetur adipisicing elit,\n" +
|
37
|
+
" sed do eiusmod tempor\n" +
|
38
|
+
" incididunt ut labore et dolore\n" +
|
39
|
+
" magna aliqua."
|
39
40
|
|
40
41
|
actual = original.wrap_and_indent(36, 4)
|
41
42
|
assert_equal expected, actual
|
42
43
|
end
|
43
44
|
|
45
|
+
def test_string_wrap_and_indent_with_large_indent
|
46
|
+
original = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " +
|
47
|
+
"sed do eiusmod tempor incididunt ut labore et dolore " +
|
48
|
+
"magna aliqua."
|
49
|
+
|
50
|
+
expected = " Lorem ipsum\n" +
|
51
|
+
" dolor sit\n" +
|
52
|
+
" amet,\n" +
|
53
|
+
" consectetur\n" +
|
54
|
+
" adipisicing\n" +
|
55
|
+
" elit, sed do\n" +
|
56
|
+
" eiusmod\n" +
|
57
|
+
" tempor\n" +
|
58
|
+
" incididunt ut\n" +
|
59
|
+
" labore et\n" +
|
60
|
+
" dolore magna\n" +
|
61
|
+
" aliqua."
|
62
|
+
|
63
|
+
actual = original.wrap_and_indent(44, 30)
|
64
|
+
assert_equal expected, actual
|
65
|
+
end
|
66
|
+
|
44
67
|
def test_string_wrap_and_indent_with_multiple_lines
|
45
68
|
original = "Lorem ipsum dolor sit\namet, consectetur adipisicing elit, " +
|
46
|
-
"sed do\neiusmod tempor incididunt ut\nlabore et dolore " +
|
69
|
+
"sed do\neiusmod tempor incididunt ut\nlabore et dolore " +
|
47
70
|
"magna\naliqua."
|
48
71
|
|
49
72
|
expected = " Lorem ipsum dolor sit amet,\n" +
|
50
|
-
" consectetur adipisicing elit
|
51
|
-
" do eiusmod tempor
|
52
|
-
" labore et dolore
|
73
|
+
" consectetur adipisicing elit,\n" +
|
74
|
+
" sed do eiusmod tempor\n" +
|
75
|
+
" incididunt ut labore et dolore\n" +
|
76
|
+
" magna aliqua."
|
53
77
|
|
54
78
|
actual = original.wrap_and_indent(36, 4)
|
55
79
|
assert_equal expected, actual
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Denis Defreyne
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-08-31 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: colored
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,11 +20,52 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ! '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
30
69
|
description: Cri allows building easy-to-use commandline interfaces with support for
|
31
70
|
subcommands.
|
32
71
|
email: denis.defreyne@stoneship.org
|
@@ -39,6 +78,8 @@ extra_rdoc_files:
|
|
39
78
|
- NEWS.md
|
40
79
|
files:
|
41
80
|
- ChangeLog
|
81
|
+
- Gemfile
|
82
|
+
- Gemfile.lock
|
42
83
|
- LICENSE
|
43
84
|
- NEWS.md
|
44
85
|
- Rakefile
|
@@ -51,6 +92,7 @@ files:
|
|
51
92
|
- lib/cri/core_ext/string.rb
|
52
93
|
- lib/cri/core_ext.rb
|
53
94
|
- lib/cri/option_parser.rb
|
95
|
+
- lib/cri/version.rb
|
54
96
|
- lib/cri.rb
|
55
97
|
- test/helper.rb
|
56
98
|
- test/test_base.rb
|
@@ -64,6 +106,7 @@ files:
|
|
64
106
|
- .gemtest
|
65
107
|
homepage: http://stoneship.org/software/cri/
|
66
108
|
licenses: []
|
109
|
+
metadata: {}
|
67
110
|
post_install_message:
|
68
111
|
rdoc_options:
|
69
112
|
- --main
|
@@ -71,22 +114,20 @@ rdoc_options:
|
|
71
114
|
require_paths:
|
72
115
|
- lib
|
73
116
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
117
|
requirements:
|
76
118
|
- - ! '>='
|
77
119
|
- !ruby/object:Gem::Version
|
78
120
|
version: '0'
|
79
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
122
|
requirements:
|
82
123
|
- - ! '>='
|
83
124
|
- !ruby/object:Gem::Version
|
84
125
|
version: '0'
|
85
126
|
requirements: []
|
86
127
|
rubyforge_project:
|
87
|
-
rubygems_version:
|
128
|
+
rubygems_version: 2.0.3
|
88
129
|
signing_key:
|
89
|
-
specification_version:
|
130
|
+
specification_version: 4
|
90
131
|
summary: a library for building easy-to-use commandline tools
|
91
132
|
test_files: []
|
92
133
|
has_rdoc:
|