gli 2.5.6 → 2.6.0.rc1

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 (46) hide show
  1. data/.travis.yml +1 -0
  2. data/Gemfile +1 -1
  3. data/features/step_definitions/todo_steps.rb +4 -0
  4. data/features/todo.feature +22 -0
  5. data/features/todo_legacy.feature +128 -0
  6. data/lib/gli.rb +3 -1
  7. data/lib/gli/app.rb +10 -2
  8. data/lib/gli/app_support.rb +39 -31
  9. data/lib/gli/command.rb +3 -2
  10. data/lib/gli/command_finder.rb +41 -0
  11. data/lib/gli/command_line_token.rb +0 -4
  12. data/lib/gli/command_support.rb +37 -64
  13. data/lib/gli/commands/doc.rb +12 -2
  14. data/lib/gli/commands/help.rb +3 -0
  15. data/lib/gli/commands/help_modules/command_help_format.rb +22 -5
  16. data/lib/gli/commands/scaffold.rb +1 -1
  17. data/lib/gli/exceptions.rb +17 -5
  18. data/lib/gli/gli_option_block_parser.rb +84 -0
  19. data/lib/gli/gli_option_parser.rb +116 -96
  20. data/lib/gli/option_parser_factory.rb +42 -10
  21. data/lib/gli/option_parsing_result.rb +19 -0
  22. data/lib/gli/version.rb +1 -1
  23. data/test/apps/todo/bin/todo +2 -0
  24. data/test/apps/todo/lib/todo/commands/make.rb +52 -0
  25. data/test/apps/todo_legacy/Gemfile +2 -0
  26. data/test/apps/todo_legacy/README.rdoc +6 -0
  27. data/test/apps/todo_legacy/Rakefile +23 -0
  28. data/test/apps/todo_legacy/bin/todo +61 -0
  29. data/test/apps/todo_legacy/lib/todo/commands/create.rb +24 -0
  30. data/test/apps/todo_legacy/lib/todo/commands/list.rb +63 -0
  31. data/test/apps/todo_legacy/lib/todo/commands/ls.rb +47 -0
  32. data/test/apps/todo_legacy/lib/todo/version.rb +3 -0
  33. data/test/apps/todo_legacy/test/tc_nothing.rb +14 -0
  34. data/test/apps/todo_legacy/todo.gemspec +23 -0
  35. data/test/apps/todo_legacy/todo.rdoc +5 -0
  36. data/test/tc_command.rb +84 -59
  37. data/test/{tc_compount_command.rb → tc_compound_command.rb} +0 -0
  38. data/test/tc_flag.rb +0 -1
  39. data/test/tc_gli.rb +2 -2
  40. data/test/tc_help.rb +11 -3
  41. data/test/tc_subcommand_parsing.rb +104 -0
  42. data/test/tc_subcommands.rb +1 -0
  43. data/test/tc_switch.rb +0 -1
  44. data/test/test_helper.rb +5 -0
  45. metadata +74 -13
  46. data/lib/gli/copy_options_to_aliases.rb +0 -33
@@ -0,0 +1,5 @@
1
+ = todo
2
+
3
+ Generate this with
4
+ todo rdoc
5
+ After you have described your command line interface
data/test/tc_command.rb CHANGED
@@ -10,54 +10,8 @@ class TC_testCommand < Clean::Test::TestCase
10
10
  $stdout = @fake_stdout
11
11
  @original_stderr = $stderr
12
12
  $stderr = @fake_stderr
13
- @app = CLIApp.new
14
- @app.error_device=@fake_stderr
15
13
  ENV.delete('GLI_DEBUG')
16
- @app.reset
17
- @app.program_desc 'A super awesome program'
18
- @app.desc 'Some Global Option'
19
- @app.switch :g
20
- @app.switch :blah
21
- @app.long_desc 'This is a very long description for a flag'
22
- @app.flag [:y,:yes]
23
- @pre_called = false
24
- @post_called = false
25
- @error_called = false
26
- @app.pre { |g,c,o,a| @pre_called = true }
27
- @app.post { |g,c,o,a| @post_called = true }
28
- @app.on_error { |g,c,o,a| @error_called = true }
29
- @glob = nil
30
- @verbose = nil
31
- @glob_verbose = nil
32
- @configure = nil
33
- @args = nil
34
- @app.desc 'Some Basic Command that potentially has a really really really really really really really long description and stuff, but you know, who cares?'
35
- @app.long_desc 'This is the long description: "Some Basic Command that potentially has a really really really really really really really long description and stuff, but you know, who cares?"'
36
- @app.arg_name 'first_file second_file'
37
- @app.command [:basic,:bs] do |c|
38
- c.desc 'be verbose'
39
- c.switch :v
40
- c.desc 'configure something or other, in some way that requires a lot of verbose text and whatnot'
41
- c.default_value 'crud'
42
- c.flag [:c,:configure]
43
- c.action do |global_options,options,arguments|
44
- @glob = global_options[:g] ? 'true' : 'false'
45
- @verbose = options[:v] ? 'true' : 'false'
46
- @glob_verbose = global_options[:v] ? 'true' : 'false'
47
- @configure = options[:c]
48
- @args = arguments
49
- end
50
- end
51
- @app.desc "Testing long help wrapping"
52
- @app.long_desc <<-EOS
53
- This will create a scaffold command line project that uses @app
54
- for command line processing. Specifically, this will create
55
- an executable ready to go, as well as a lib and test directory, all
56
- inside the directory named for your project
57
- EOS
58
- @app.command [:test_wrap] do |c|
59
- c.action {}
60
- end
14
+ create_app
61
15
  end
62
16
 
63
17
  def teardown
@@ -85,18 +39,25 @@ class TC_testCommand < Clean::Test::TestCase
85
39
  end
86
40
 
87
41
  def test_basic_command
88
- args_args = [%w(-g basic -v -c foo bar baz quux), %w(-g basic -v --configure=foo bar baz quux)]
89
- args_args.each do |args|
90
- args_orig = args.clone
91
- @app.run(args)
92
- assert_equal('true',@glob,"For args #{args_orig}")
93
- assert_equal('true',@verbose,"For args #{args_orig}")
94
- assert_equal('false',@glob_verbose,"For args #{args_orig}")
95
- assert_equal('foo',@configure,"For args #{args_orig}")
96
- assert_equal(%w(bar baz quux),@args,"For args #{args_orig}")
97
- assert(@pre_called,"Pre block should have been called for args #{args_orig}")
98
- assert(@post_called,"Post block should have been called for args #{args_orig}")
99
- assert(!@error_called,"Error block should not have been called for args #{args_orig}")
42
+ [false,true].each do |openstruct|
43
+ end
44
+ [true].each do |openstruct|
45
+ create_app(openstruct)
46
+ openstruct_message = openstruct ? ", with use_openstruct" : ""
47
+ args_args = [%w(-g basic -v -c foo bar baz quux), %w(-g basic -v --configure=foo bar baz quux)]
48
+ args_args.each do |args|
49
+ args_orig = args.clone
50
+ @app.run(args)
51
+ assert_equal('true',@glob,"For args #{args_orig}#{openstruct_message}")
52
+ assert_equal('true',@glob_long_form,"For args #{args_orig}#{openstruct_message}")
53
+ assert_equal('true',@verbose,"For args #{args_orig}#{openstruct_message}")
54
+ assert_equal('false',@glob_verbose,"For args #{args_orig}#{openstruct_message}")
55
+ assert_equal('foo',@configure,"For args #{args_orig}#{openstruct_message}")
56
+ assert_equal(%w(bar baz quux),@args,"For args #{args_orig}#{openstruct_message}")
57
+ assert(@pre_called,"Pre block should have been called for args #{args_orig}#{openstruct_message}")
58
+ assert(@post_called,"Post block should have been called for args #{args_orig}#{openstruct_message}")
59
+ assert(!@error_called,"Error block should not have been called for args #{args_orig}#{openstruct_message}")
60
+ end
100
61
  end
101
62
  end
102
63
 
@@ -402,4 +363,68 @@ class TC_testCommand < Clean::Test::TestCase
402
363
  "Didn't expected output to contain #{regexp.inspect}, output was:\n#{output}"
403
364
  end
404
365
 
366
+ def create_app(use_openstruct=false)
367
+ @app = CLIApp.new
368
+ @app.error_device=@fake_stderr
369
+ @app.reset
370
+
371
+ if use_openstruct
372
+ @app.use_openstruct true
373
+ end
374
+
375
+ @app.program_desc 'A super awesome program'
376
+ @app.desc 'Some Global Option'
377
+ @app.switch [:g,:global]
378
+ @app.switch :blah
379
+ @app.long_desc 'This is a very long description for a flag'
380
+ @app.flag [:y,:yes]
381
+ @pre_called = false
382
+ @post_called = false
383
+ @error_called = false
384
+ @app.pre { |g,c,o,a| @pre_called = true }
385
+ @app.post { |g,c,o,a| @post_called = true }
386
+ @app.on_error { |g,c,o,a| @error_called = true }
387
+ @glob = nil
388
+ @verbose = nil
389
+ @glob_verbose = nil
390
+ @configure = nil
391
+ @args = nil
392
+ @app.desc 'Some Basic Command that potentially has a really really really really really really really long description and stuff, but you know, who cares?'
393
+ @app.long_desc 'This is the long description: "Some Basic Command that potentially has a really really really really really really really long description and stuff, but you know, who cares?"'
394
+ @app.arg_name 'first_file second_file'
395
+ @app.command [:basic,:bs] do |c|
396
+ c.desc 'be verbose'
397
+ c.switch :v
398
+ c.desc 'configure something or other, in some way that requires a lot of verbose text and whatnot'
399
+ c.default_value 'crud'
400
+ c.flag [:c,:configure]
401
+ c.action do |global_options,options,arguments|
402
+ if use_openstruct
403
+ @glob = global_options.g ? 'true' : 'false'
404
+ @glob_long_form = global_options.global ? 'true' : 'false'
405
+ @verbose = options.v ? 'true' : 'false'
406
+ @glob_verbose = global_options.v ? 'true' : 'false'
407
+ @configure = options.c
408
+ else
409
+ @glob = global_options[:g] ? 'true' : 'false'
410
+ @glob_long_form = global_options[:global] ? 'true' : 'false'
411
+ @verbose = options[:v] ? 'true' : 'false'
412
+ @glob_verbose = global_options[:v] ? 'true' : 'false'
413
+ @configure = options[:c]
414
+ end
415
+ @args = arguments
416
+ end
417
+ end
418
+ @app.desc "Testing long help wrapping"
419
+ @app.long_desc <<-EOS
420
+ This will create a scaffold command line project that uses @app
421
+ for command line processing. Specifically, this will create
422
+ an executable ready to go, as well as a lib and test directory, all
423
+ inside the directory named for your project
424
+ EOS
425
+ @app.command [:test_wrap] do |c|
426
+ c.action {}
427
+ end
428
+ end
429
+
405
430
  end
data/test/tc_flag.rb CHANGED
@@ -57,7 +57,6 @@ class TC_testFlag < Clean::Test::TestCase
57
57
  assert_equal(expected[:safe_default_value],@flag.safe_default_value)
58
58
  assert_equal(expected[:must_match],@flag.must_match)
59
59
  assert_equal(expected[:type],@flag.type)
60
- assert(@flag.usage != nil)
61
60
  }
62
61
  end
63
62
  end
data/test/tc_gli.rb CHANGED
@@ -23,6 +23,7 @@ class TC_testGLI < Clean::Test::TestCase
23
23
  @original_stderr = $stderr
24
24
  $stderr = @fake_stderr
25
25
  @app = CLIApp.new
26
+
26
27
  @config_file = File.expand_path(File.dirname(File.realpath(__FILE__)) + '/new_config.yaml')
27
28
  @gli_debug = ENV['GLI_DEBUG']
28
29
  @app.error_device=@fake_stderr
@@ -480,6 +481,7 @@ class TC_testGLI < Clean::Test::TestCase
480
481
  end
481
482
 
482
483
  def test_exits_zero_on_success
484
+ @app.reset
483
485
  assert_equal 0,@app.run([]),@fake_stderr.to_s
484
486
  end
485
487
 
@@ -649,8 +651,6 @@ class TC_testGLI < Clean::Test::TestCase
649
651
  assert (object.flags[:f] )
650
652
  assert_equal(description,object.flags[:f].description)
651
653
  assert_equal(long_desc,object.flags[:f].long_description)
652
- assert(nil != object.flags[:f].usage)
653
- assert(object.usage != nil) if object.respond_to? :usage
654
654
  end
655
655
 
656
656
  def do_test_switch_create(object)
data/test/tc_help.rb CHANGED
@@ -26,7 +26,9 @@ class TC_testHelp < Clean::Test::TestCase
26
26
 
27
27
  test_that "the help command is configured properly when created" do
28
28
  Given {
29
- @command = GLI::Commands::Help.new(TestApp.new,@output,@error)
29
+ app = TestApp.new
30
+ app.subcommand_option_handling :normal
31
+ @command = GLI::Commands::Help.new(app,@output,@error)
30
32
  }
31
33
  Then {
32
34
  assert_equal 'help',@command.name.to_s
@@ -42,7 +44,9 @@ class TC_testHelp < Clean::Test::TestCase
42
44
 
43
45
  test_that "the help command can be configured to skip things declaratively" do
44
46
  Given {
45
- @command = GLI::Commands::Help.new(TestApp.new,@output,@error)
47
+ app = TestApp.new
48
+ app.subcommand_option_handling :normal
49
+ @command = GLI::Commands::Help.new(app,@output,@error)
46
50
  GLI::Commands::Help.skips_pre = false
47
51
  GLI::Commands::Help.skips_post = false
48
52
  GLI::Commands::Help.skips_around = false
@@ -59,7 +63,9 @@ class TC_testHelp < Clean::Test::TestCase
59
63
  GLI::Commands::Help.skips_pre = false
60
64
  GLI::Commands::Help.skips_post = false
61
65
  GLI::Commands::Help.skips_around = false
62
- @command = GLI::Commands::Help.new(TestApp.new,@output,@error)
66
+ app = TestApp.new
67
+ app.subcommand_option_handling :normal
68
+ @command = GLI::Commands::Help.new(app,@output,@error)
63
69
  }
64
70
  Then {
65
71
  assert !@command.skips_pre
@@ -155,6 +161,7 @@ class TC_testHelp < Clean::Test::TestCase
155
161
  Given {
156
162
  app = TestApp.new
157
163
  app.instance_eval do
164
+ subcommand_option_handling :normal
158
165
  command :top do |top|
159
166
  top.command :list do |list|
160
167
  list.action do |g,o,a|
@@ -201,6 +208,7 @@ private
201
208
  @app = TestApp.new
202
209
  @app.instance_eval do
203
210
  program_desc program_description
211
+ subcommand_option_handling :normal
204
212
 
205
213
  unless omit_options
206
214
  flags.each do |(description,arg,flag_names)|
@@ -0,0 +1,104 @@
1
+ require 'test_helper'
2
+ require 'pp'
3
+
4
+ class TC_testSubCommandParsing < Clean::Test::TestCase
5
+ include TestHelper
6
+
7
+ test_that "commands options may clash with globals and it gets sorted out" do
8
+ Given :app_with_subcommands_storing_results
9
+ When {
10
+ @app.run(%w(-f global command1 -f command -s foo))
11
+ }
12
+ Then {
13
+ assert_equal 'command1',@results[:command_name]
14
+ assert_equal 'global', @results[:global_options][:f],'global'
15
+ assert !@results[:global_options][:s]
16
+ assert_equal 'command', @results[:command_options][:f]
17
+ assert @results[:command_options][:s]
18
+ }
19
+ end
20
+
21
+ test_that "in legacy mode, subcommand options all share a namespace" do
22
+ Given :app_with_subcommands_storing_results
23
+ When {
24
+ @app.run(%w(-f global command1 -f command -s subcommand10 -f sub))
25
+ }
26
+ Then {
27
+ with_clue(@results) {
28
+ assert_equal 'subcommand10',@results[:command_name]
29
+ assert_equal 'global', @results[:global_options][:f],'global'
30
+ assert !@results[:global_options][:s]
31
+ assert_equal 'sub', @results[:command_options][:f]
32
+ assert @results[:command_options][:s]
33
+ assert_nil @results[:command_options][GLI::Command::PARENT]
34
+ assert_nil @results[:command_options][GLI::Command::PARENT]
35
+ }
36
+ }
37
+ end
38
+
39
+ test_that "in normal mode, each subcommand has its own namespace" do
40
+ Given :app_with_subcommands_storing_results, :normal
41
+ When {
42
+ @app.run(%w(-f global command1 -f command -s subcommand10 -f sub))
43
+ }
44
+ Then {
45
+ with_clue(@results) {
46
+ assert_equal 'subcommand10',@results[:command_name]
47
+ assert_equal 'global', @results[:global_options][:f],'global'
48
+ assert !@results[:global_options][:s]
49
+ assert_equal 'sub', @results[:command_options][:f]
50
+ assert !@results[:command_options][:s]
51
+ assert_equal 'command',@results[:command_options][GLI::Command::PARENT][:f]
52
+ assert @results[:command_options][GLI::Command::PARENT][:s]
53
+ }
54
+ }
55
+ end
56
+
57
+ private
58
+ def with_clue(message,&block)
59
+ block.call
60
+ rescue Exception
61
+ PP.pp message,dump=""
62
+ puts dump
63
+ raise
64
+ end
65
+
66
+ def app_with_subcommands_storing_results(subcommand_option_handling_strategy = :legacy)
67
+ @results = {}
68
+ @app = CLIApp.new
69
+ @app.subcommand_option_handling subcommand_option_handling_strategy
70
+ @app.flag ['f','flag']
71
+ @app.switch ['s','switch']
72
+
73
+ 2.times do |i|
74
+ @app.command "command#{i}" do |c|
75
+ c.flag ['f','flag']
76
+ c.switch ['s','switch']
77
+ c.action do |global,options,args|
78
+ @results = {
79
+ :command_name => "command#{i}",
80
+ :global_options => global,
81
+ :command_options => options,
82
+ :args => args
83
+ }
84
+ end
85
+
86
+ 2.times do |j|
87
+ c.command "subcommand#{i}#{j}" do |subcommand|
88
+ subcommand.flag ['f','flag']
89
+ subcommand.flag ['foo']
90
+ subcommand.switch ['s','switch']
91
+ subcommand.action do |global,options,args|
92
+ @results = {
93
+ :command_name => "subcommand#{i}#{j}",
94
+ :global_options => global,
95
+ :command_options => options,
96
+ :args => args
97
+ }
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -14,6 +14,7 @@ class TC_testSubCommand < Clean::Test::TestCase
14
14
 
15
15
  @app = CLIApp.new
16
16
  @app.reset
17
+ @app.subcommand_option_handling :legacy
17
18
  @app.error_device=@fake_stderr
18
19
  ENV.delete('GLI_DEBUG')
19
20
  end
data/test/tc_switch.rb CHANGED
@@ -49,7 +49,6 @@ class TC_testSwitch < Clean::Test::TestCase
49
49
  lambda {
50
50
  assert_equal(@options[:desc],@switch.description)
51
51
  assert_equal(@options[:long_desc],@switch.long_description)
52
- assert(@switch.usage != nil)
53
52
  }
54
53
  end
55
54
 
data/test/test_helper.rb CHANGED
@@ -9,6 +9,11 @@ module TestHelper
9
9
  include OptionTestHelper
10
10
  class CLIApp
11
11
  include GLI::App
12
+
13
+ def reset
14
+ super
15
+ @subcommand_option_handling_strategy = :normal
16
+ end
12
17
  end
13
18
  end
14
19
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.6
5
- prerelease:
4
+ version: 2.6.0.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - David Copeland
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-31 00:00:00.000000000 Z
12
+ date: 2013-06-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -173,6 +173,8 @@ files:
173
173
  ZmVhdHVyZXMvc3VwcG9ydC9lbnYucmI=
174
174
  - !binary |-
175
175
  ZmVhdHVyZXMvdG9kby5mZWF0dXJl
176
+ - !binary |-
177
+ ZmVhdHVyZXMvdG9kb19sZWdhY3kuZmVhdHVyZQ==
176
178
  - !binary |-
177
179
  Z2xpLmNoZWF0
178
180
  - !binary |-
@@ -187,6 +189,8 @@ files:
187
189
  bGliL2dsaS9hcHBfc3VwcG9ydC5yYg==
188
190
  - !binary |-
189
191
  bGliL2dsaS9jb21tYW5kLnJi
192
+ - !binary |-
193
+ bGliL2dsaS9jb21tYW5kX2ZpbmRlci5yYg==
190
194
  - !binary |-
191
195
  bGliL2dsaS9jb21tYW5kX2xpbmVfb3B0aW9uLnJi
192
196
  - !binary |-
@@ -237,18 +241,20 @@ files:
237
241
  bGliL2dsaS9jb21tYW5kcy9yZG9jX2RvY3VtZW50X2xpc3RlbmVyLnJi
238
242
  - !binary |-
239
243
  bGliL2dsaS9jb21tYW5kcy9zY2FmZm9sZC5yYg==
240
- - !binary |-
241
- bGliL2dsaS9jb3B5X29wdGlvbnNfdG9fYWxpYXNlcy5yYg==
242
244
  - !binary |-
243
245
  bGliL2dsaS9kc2wucmI=
244
246
  - !binary |-
245
247
  bGliL2dsaS9leGNlcHRpb25zLnJi
246
248
  - !binary |-
247
249
  bGliL2dsaS9mbGFnLnJi
250
+ - !binary |-
251
+ bGliL2dsaS9nbGlfb3B0aW9uX2Jsb2NrX3BhcnNlci5yYg==
248
252
  - !binary |-
249
253
  bGliL2dsaS9nbGlfb3B0aW9uX3BhcnNlci5yYg==
250
254
  - !binary |-
251
255
  bGliL2dsaS9vcHRpb25fcGFyc2VyX2ZhY3RvcnkucmI=
256
+ - !binary |-
257
+ bGliL2dsaS9vcHRpb25fcGFyc2luZ19yZXN1bHQucmI=
252
258
  - !binary |-
253
259
  bGliL2dsaS9vcHRpb25zLnJi
254
260
  - !binary |-
@@ -273,6 +279,8 @@ files:
273
279
  dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vY29tbWFuZHMvbGlzdC5yYg==
274
280
  - !binary |-
275
281
  dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vY29tbWFuZHMvbHMucmI=
282
+ - !binary |-
283
+ dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vY29tbWFuZHMvbWFrZS5yYg==
276
284
  - !binary |-
277
285
  dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vdmVyc2lvbi5yYg==
278
286
  - !binary |-
@@ -281,6 +289,30 @@ files:
281
289
  dGVzdC9hcHBzL3RvZG8vdG9kby5nZW1zcGVj
282
290
  - !binary |-
283
291
  dGVzdC9hcHBzL3RvZG8vdG9kby5yZG9j
292
+ - !binary |-
293
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L0dlbWZpbGU=
294
+ - !binary |-
295
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L1JFQURNRS5yZG9j
296
+ - !binary |-
297
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L1Jha2VmaWxl
298
+ - !binary |-
299
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2Jpbi90b2Rv
300
+ - !binary |-
301
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL2NvbW1hbmRzL2NyZWF0
302
+ ZS5yYg==
303
+ - !binary |-
304
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL2NvbW1hbmRzL2xpc3Qu
305
+ cmI=
306
+ - !binary |-
307
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL2NvbW1hbmRzL2xzLnJi
308
+ - !binary |-
309
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL3ZlcnNpb24ucmI=
310
+ - !binary |-
311
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L3Rlc3QvdGNfbm90aGluZy5yYg==
312
+ - !binary |-
313
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L3RvZG8uZ2Vtc3BlYw==
314
+ - !binary |-
315
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L3RvZG8ucmRvYw==
284
316
  - !binary |-
285
317
  dGVzdC9hcHBzL3RvZG9fcGx1Z2lucy9jb21tYW5kcy90aGlyZC5yYg==
286
318
  - !binary |-
@@ -294,7 +326,7 @@ files:
294
326
  - !binary |-
295
327
  dGVzdC90Y19jb21tYW5kLnJi
296
328
  - !binary |-
297
- dGVzdC90Y19jb21wb3VudF9jb21tYW5kLnJi
329
+ dGVzdC90Y19jb21wb3VuZF9jb21tYW5kLnJi
298
330
  - !binary |-
299
331
  dGVzdC90Y19kb2MucmI=
300
332
  - !binary |-
@@ -305,6 +337,8 @@ files:
305
337
  dGVzdC90Y19oZWxwLnJi
306
338
  - !binary |-
307
339
  dGVzdC90Y19vcHRpb25zLnJi
340
+ - !binary |-
341
+ dGVzdC90Y19zdWJjb21tYW5kX3BhcnNpbmcucmI=
308
342
  - !binary |-
309
343
  dGVzdC90Y19zdWJjb21tYW5kcy5yYg==
310
344
  - !binary |-
@@ -333,16 +367,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
333
367
  version: '0'
334
368
  segments:
335
369
  - 0
336
- hash: -4071846445678563052
370
+ hash: -2077859074459195456
337
371
  required_rubygems_version: !ruby/object:Gem::Requirement
338
372
  none: false
339
373
  requirements:
340
- - - ! '>='
374
+ - - ! '>'
341
375
  - !ruby/object:Gem::Version
342
- version: '0'
343
- segments:
344
- - 0
345
- hash: -4071846445678563052
376
+ version: 1.3.1
346
377
  requirements: []
347
378
  rubyforge_project: gli
348
379
  rubygems_version: 1.8.25
@@ -365,6 +396,8 @@ test_files:
365
396
  ZmVhdHVyZXMvc3VwcG9ydC9lbnYucmI=
366
397
  - !binary |-
367
398
  ZmVhdHVyZXMvdG9kby5mZWF0dXJl
399
+ - !binary |-
400
+ ZmVhdHVyZXMvdG9kb19sZWdhY3kuZmVhdHVyZQ==
368
401
  - !binary |-
369
402
  dGVzdC9hcHBzL1JFQURNRS5tZA==
370
403
  - !binary |-
@@ -381,6 +414,8 @@ test_files:
381
414
  dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vY29tbWFuZHMvbGlzdC5yYg==
382
415
  - !binary |-
383
416
  dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vY29tbWFuZHMvbHMucmI=
417
+ - !binary |-
418
+ dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vY29tbWFuZHMvbWFrZS5yYg==
384
419
  - !binary |-
385
420
  dGVzdC9hcHBzL3RvZG8vbGliL3RvZG8vdmVyc2lvbi5yYg==
386
421
  - !binary |-
@@ -389,6 +424,30 @@ test_files:
389
424
  dGVzdC9hcHBzL3RvZG8vdG9kby5nZW1zcGVj
390
425
  - !binary |-
391
426
  dGVzdC9hcHBzL3RvZG8vdG9kby5yZG9j
427
+ - !binary |-
428
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L0dlbWZpbGU=
429
+ - !binary |-
430
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L1JFQURNRS5yZG9j
431
+ - !binary |-
432
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L1Jha2VmaWxl
433
+ - !binary |-
434
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2Jpbi90b2Rv
435
+ - !binary |-
436
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL2NvbW1hbmRzL2NyZWF0
437
+ ZS5yYg==
438
+ - !binary |-
439
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL2NvbW1hbmRzL2xpc3Qu
440
+ cmI=
441
+ - !binary |-
442
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL2NvbW1hbmRzL2xzLnJi
443
+ - !binary |-
444
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L2xpYi90b2RvL3ZlcnNpb24ucmI=
445
+ - !binary |-
446
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L3Rlc3QvdGNfbm90aGluZy5yYg==
447
+ - !binary |-
448
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L3RvZG8uZ2Vtc3BlYw==
449
+ - !binary |-
450
+ dGVzdC9hcHBzL3RvZG9fbGVnYWN5L3RvZG8ucmRvYw==
392
451
  - !binary |-
393
452
  dGVzdC9hcHBzL3RvZG9fcGx1Z2lucy9jb21tYW5kcy90aGlyZC5yYg==
394
453
  - !binary |-
@@ -402,7 +461,7 @@ test_files:
402
461
  - !binary |-
403
462
  dGVzdC90Y19jb21tYW5kLnJi
404
463
  - !binary |-
405
- dGVzdC90Y19jb21wb3VudF9jb21tYW5kLnJi
464
+ dGVzdC90Y19jb21wb3VuZF9jb21tYW5kLnJi
406
465
  - !binary |-
407
466
  dGVzdC90Y19kb2MucmI=
408
467
  - !binary |-
@@ -413,6 +472,8 @@ test_files:
413
472
  dGVzdC90Y19oZWxwLnJi
414
473
  - !binary |-
415
474
  dGVzdC90Y19vcHRpb25zLnJi
475
+ - !binary |-
476
+ dGVzdC90Y19zdWJjb21tYW5kX3BhcnNpbmcucmI=
416
477
  - !binary |-
417
478
  dGVzdC90Y19zdWJjb21tYW5kcy5yYg==
418
479
  - !binary |-