gli 2.5.6 → 2.6.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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 |-