travis-cl 1.2.4

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 (114) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +134 -0
  3. data/Gemfile +11 -0
  4. data/Gemfile.lock +59 -0
  5. data/MIT_LICENSE.md +21 -0
  6. data/README.md +1283 -0
  7. data/cl.gemspec +30 -0
  8. data/examples/README.md +22 -0
  9. data/examples/_src/args/cast.erb.rb +100 -0
  10. data/examples/_src/args/opts.erb.rb +100 -0
  11. data/examples/_src/args/required.erb.rb +63 -0
  12. data/examples/_src/args/splat.erb.rb +55 -0
  13. data/examples/_src/gem.erb.rb +99 -0
  14. data/examples/_src/heroku.erb.rb +47 -0
  15. data/examples/_src/rakeish.erb.rb +54 -0
  16. data/examples/_src/readme/abstract.erb.rb +27 -0
  17. data/examples/_src/readme/alias.erb.rb +22 -0
  18. data/examples/_src/readme/arg.erb.rb +21 -0
  19. data/examples/_src/readme/arg_array.erb.rb +21 -0
  20. data/examples/_src/readme/arg_type.erb.rb +23 -0
  21. data/examples/_src/readme/args_splat.erb.rb +55 -0
  22. data/examples/_src/readme/array.erb.rb +21 -0
  23. data/examples/_src/readme/basic.erb.rb +72 -0
  24. data/examples/_src/readme/default.erb.rb +21 -0
  25. data/examples/_src/readme/deprecated.erb.rb +21 -0
  26. data/examples/_src/readme/deprecated_alias.erb.rb +21 -0
  27. data/examples/_src/readme/description.erb.rb +60 -0
  28. data/examples/_src/readme/downcase.erb.rb +21 -0
  29. data/examples/_src/readme/enum.erb.rb +35 -0
  30. data/examples/_src/readme/example.erb.rb +25 -0
  31. data/examples/_src/readme/format.erb.rb +35 -0
  32. data/examples/_src/readme/internal.erb.rb +28 -0
  33. data/examples/_src/readme/negate.erb.rb +37 -0
  34. data/examples/_src/readme/note.erb.rb +25 -0
  35. data/examples/_src/readme/opts.erb.rb +33 -0
  36. data/examples/_src/readme/opts_block.erb.rb +30 -0
  37. data/examples/_src/readme/range.erb.rb +35 -0
  38. data/examples/_src/readme/registry.erb.rb +18 -0
  39. data/examples/_src/readme/required.erb.rb +35 -0
  40. data/examples/_src/readme/requireds.erb.rb +46 -0
  41. data/examples/_src/readme/requires.erb.rb +35 -0
  42. data/examples/_src/readme/runner.erb.rb +29 -0
  43. data/examples/_src/readme/runner_custom.erb.rb +25 -0
  44. data/examples/_src/readme/secret.erb.rb +22 -0
  45. data/examples/_src/readme/see.erb.rb +25 -0
  46. data/examples/_src/readme/type.erb.rb +21 -0
  47. data/examples/args/cast +98 -0
  48. data/examples/args/opts +98 -0
  49. data/examples/args/required +62 -0
  50. data/examples/args/splat +58 -0
  51. data/examples/gem +97 -0
  52. data/examples/heroku +48 -0
  53. data/examples/rakeish +50 -0
  54. data/examples/readme/abstract +28 -0
  55. data/examples/readme/alias +21 -0
  56. data/examples/readme/arg +20 -0
  57. data/examples/readme/arg_array +20 -0
  58. data/examples/readme/arg_type +22 -0
  59. data/examples/readme/args_splat +58 -0
  60. data/examples/readme/array +20 -0
  61. data/examples/readme/basic +67 -0
  62. data/examples/readme/default +20 -0
  63. data/examples/readme/deprecated +20 -0
  64. data/examples/readme/deprecated_alias +20 -0
  65. data/examples/readme/description +56 -0
  66. data/examples/readme/downcase +20 -0
  67. data/examples/readme/enum +33 -0
  68. data/examples/readme/example +21 -0
  69. data/examples/readme/format +33 -0
  70. data/examples/readme/internal +24 -0
  71. data/examples/readme/negate +44 -0
  72. data/examples/readme/note +21 -0
  73. data/examples/readme/opts +31 -0
  74. data/examples/readme/opts_block +29 -0
  75. data/examples/readme/range +33 -0
  76. data/examples/readme/registry +15 -0
  77. data/examples/readme/required +33 -0
  78. data/examples/readme/requireds +46 -0
  79. data/examples/readme/requires +33 -0
  80. data/examples/readme/runner +30 -0
  81. data/examples/readme/runner_custom +22 -0
  82. data/examples/readme/secret +21 -0
  83. data/examples/readme/see +21 -0
  84. data/examples/readme/type +20 -0
  85. data/lib/cl/arg.rb +79 -0
  86. data/lib/cl/args.rb +92 -0
  87. data/lib/cl/cast.rb +55 -0
  88. data/lib/cl/cmd.rb +74 -0
  89. data/lib/cl/config/env.rb +52 -0
  90. data/lib/cl/config/files.rb +34 -0
  91. data/lib/cl/config.rb +30 -0
  92. data/lib/cl/ctx.rb +36 -0
  93. data/lib/cl/dsl.rb +182 -0
  94. data/lib/cl/errors.rb +119 -0
  95. data/lib/cl/help/cmd.rb +118 -0
  96. data/lib/cl/help/cmds.rb +26 -0
  97. data/lib/cl/help/format.rb +69 -0
  98. data/lib/cl/help/table.rb +58 -0
  99. data/lib/cl/help/usage.rb +26 -0
  100. data/lib/cl/help.rb +37 -0
  101. data/lib/cl/helper/suggest.rb +10 -0
  102. data/lib/cl/helper.rb +47 -0
  103. data/lib/cl/opt.rb +276 -0
  104. data/lib/cl/opts/validate.rb +117 -0
  105. data/lib/cl/opts.rb +114 -0
  106. data/lib/cl/parser/format.rb +63 -0
  107. data/lib/cl/parser.rb +70 -0
  108. data/lib/cl/runner/default.rb +86 -0
  109. data/lib/cl/runner/multi.rb +34 -0
  110. data/lib/cl/runner.rb +10 -0
  111. data/lib/cl/ui.rb +146 -0
  112. data/lib/cl/version.rb +3 -0
  113. data/lib/cl.rb +62 -0
  114. metadata +177 -0
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Lft < Cl::Cmd
8
+ register :lft
9
+
10
+ arg :a, type: :array, splat: true
11
+ arg :b
12
+ arg :c
13
+
14
+ def run
15
+ p [a, b, c]
16
+ end
17
+ end
18
+
19
+ class Mid < Cl::Cmd
20
+ register :mid
21
+
22
+ arg :a
23
+ arg :b, type: :array, splat: true
24
+ arg :c
25
+
26
+ def run
27
+ p [a, b, c]
28
+ end
29
+ end
30
+
31
+ class Rgt < Cl::Cmd
32
+ register :rgt
33
+
34
+ arg :a
35
+ arg :b
36
+ arg :c, type: :array, splat: true
37
+
38
+ def run
39
+ p [a, b, c]
40
+ end
41
+ end
42
+ rb
43
+ -%>
44
+
45
+ <%= run "Cl.new('splat').run(%w(lft 1 2 3 4 5))" %>
46
+
47
+ <%= out '[["1", "2", "3"], "4", "5"]' %>
48
+
49
+ <%= run "Cl.new('splat').run(%w(mid 1 2 3 4 5))" %>
50
+
51
+ <%= out '["1", ["2", "3", "4"], "5"]' %>
52
+
53
+ <%= run "Cl.new('splat').run(%w(rgt 1 2 3 4 5))" %>
54
+
55
+ <%= out '["1", "2", ["3", "4", "5"]]' %>
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', type: :array
11
+
12
+ def run
13
+ p to
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --to one --to two))" %>
20
+
21
+ <%= out '["one", "two"]' %>
@@ -0,0 +1,72 @@
1
+ <%= run sq(<<-'rb')
2
+ require 'cl'
3
+
4
+ # e.g. lib/owners/add.rb
5
+ module Owners
6
+ class Add < Cl::Cmd
7
+ register :add
8
+
9
+ summary 'Add one or more owners to an existing owner group'
10
+
11
+ description <<~str
12
+ Use this command to add one or more owners to an existing
13
+ owner group.
14
+
15
+ [...]
16
+ str
17
+
18
+ args :owner
19
+
20
+ opt '-t', '--to TO', 'An existing owner group'
21
+
22
+ def run
23
+ # implement adding the owner as given in `owner` (as well as `args`)
24
+ # to the group given in `to` (as well as `opts[:to]`).
25
+ p owner: owner, to: to, to?: to?, args: args, opts: opts
26
+ end
27
+ end
28
+ end
29
+ rb
30
+ -%>
31
+
32
+ # Running this, e.g. using `bin/owners add one,two --to group` will instantiate the
33
+ # class `Owners::Add`, and call the method `run` on it.
34
+
35
+ <%= run sq(<<-'rb')
36
+ # e.g. bin/owners
37
+ #
38
+ # args normally would be ARGV
39
+ args = %w(add one --to group)
40
+
41
+ Cl.new('owners').run(args)
42
+ rb
43
+ -%>
44
+
45
+ <%= out '{:owner=>"one", :to=>"group", :to?=>true, :args=>["one"], :opts=>{:to=>"group"}}' %>
46
+
47
+ <%= run "Cl.new('owners').run(%w(add --help))" %>
48
+
49
+ <%= out sq(<<-'str')
50
+ Usage: owners add [owner] [options]
51
+
52
+ Summary:
53
+
54
+ Add one or more owners to an existing owner group
55
+
56
+ Description:
57
+
58
+ Use this command to add one or more owners to an existing
59
+ owner group.
60
+
61
+ [...]
62
+
63
+ Arguments:
64
+
65
+ owner type: string
66
+
67
+ Options:
68
+
69
+ -t --to TO An existing owner group (type: string)
70
+ --help Get help on this command
71
+ str
72
+ %>
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', default: 'default'
11
+
12
+ def run
13
+ p to: to
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add))" %>
20
+
21
+ <%= out '{:to=>"default"}' %>
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--target GROUP', deprecated: 'Deprecated.'
11
+
12
+ def run
13
+ p target: target, deprecations: deprecations
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --target one))" %>
20
+
21
+ <%= out '{:target=>"one", :deprecations=>{:target=>"Deprecated."}}' %>
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', alias: :target, deprecated: :target
11
+
12
+ def run
13
+ p to: to, deprecations: deprecations
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --target one))" %>
20
+
21
+ <%= out '{:to=>"one", :deprecations=>{:target=>:to}}' %>
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ module Owners
8
+ class Add < Cl::Cmd
9
+ register :add
10
+
11
+ summary 'Add one or more owners to an existing owner group'
12
+
13
+ description <<~str
14
+ Use this command to add one or more owners to an existing
15
+ owner group.
16
+ str
17
+
18
+ examples <<~str
19
+ Adding a single user to the group admins:
20
+
21
+ owners add user --to admins
22
+
23
+ Adding a several users at once:
24
+
25
+ owners add one two three --to admins
26
+ str
27
+ end
28
+ end
29
+ rb
30
+ -%>
31
+
32
+ <%= run "Cl.new('owners').run(%w(add --help))" %>
33
+
34
+ <%= out sq(<<-'str')
35
+ Usage: owners add [options]
36
+
37
+ Summary:
38
+
39
+ Add one or more owners to an existing owner group
40
+
41
+ Description:
42
+
43
+ Use this command to add one or more owners to an existing
44
+ owner group.
45
+
46
+ Options:
47
+
48
+ --help Get help on this command
49
+
50
+ Examples:
51
+
52
+ Adding a single user to the group admins:
53
+
54
+ owners add user --to admins
55
+
56
+ Adding a several users at once:
57
+
58
+ owners add one two three --to admins
59
+ str
60
+ %>
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', downcase: true
11
+
12
+ def run
13
+ p to: to
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --to ONE))" %>
20
+
21
+ <%= out '{:to=>"one"}' %>
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', enum: %w(one two)
11
+
12
+ def run
13
+ p to: to
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --to one))" %>
20
+
21
+ <%= out '{:to=>"one"}' %>
22
+
23
+ <%= run "Cl.new('owners').run(%w(add --to unknown))" %>
24
+
25
+ <%= out sq(<<-'str')
26
+ Unknown value: to=unknown (known values: one, two)
27
+
28
+ Usage: owners add [options]
29
+
30
+ Options:
31
+
32
+ --to GROUP type: string, known values: one, two
33
+ --help Get help on this command
34
+ str
35
+ %>
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', example: 'group-one'
11
+ end
12
+ rb
13
+ -%>
14
+
15
+ <%= run "Cl.new('owners').run(%w(add --help))" %>
16
+
17
+ <%= out sq(<<-'str')
18
+ Usage: owners add [options]
19
+
20
+ Options:
21
+
22
+ --to GROUP type: string, e.g.: group-one
23
+ --help Get help on this command
24
+ str
25
+ %>
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', format: /^\w+$/
11
+
12
+ def run
13
+ p to: to
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --to one))" %>
20
+
21
+ <%= out '{:to=>"one"}' %>
22
+
23
+ <%= run "Cl.new('owners').run(['add', '--to', 'does not match!'])" %>
24
+
25
+ <%= out sq(<<-'str')
26
+ Invalid format: to (format: /^\w+$/)
27
+
28
+ Usage: owners add [options]
29
+
30
+ Options:
31
+
32
+ --to GROUP type: string, format: /^\w+$/
33
+ --help Get help on this command
34
+ str
35
+ %>
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ require 'cl'
5
+
6
+ <%= run sq(<<-'rb')
7
+ require 'cl'
8
+
9
+ class Add < Cl::Cmd
10
+ register :add
11
+
12
+ opt '--to GROUP'
13
+ opt '--hidden', internal: true
14
+ end
15
+ rb
16
+ -%>
17
+
18
+ <%= run "Cl.new('owners').run(%w(add --help))" %>
19
+
20
+ <%= out sq(<<-'str')
21
+ Usage: owners add [options]
22
+
23
+ Options:
24
+
25
+ --to GROUP type: string
26
+ --help Get help on this command
27
+ str
28
+ %>
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--notifications', 'Send out notifications to the team', negate: %w(skip)
11
+
12
+ def run
13
+ p notifications?
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --notifications))" %>
20
+
21
+ <%= out 'true' %>
22
+
23
+ <%= run "Cl.new('owners').run(%w(add --no_notifications))" %>
24
+
25
+ <%= out 'false' %>
26
+
27
+ <%= run "Cl.new('owners').run(%w(add --no-notifications))" %>
28
+
29
+ <%= out 'false' %>
30
+
31
+ <%= run "Cl.new('owners').run(%w(add --skip_notifications))" %>
32
+
33
+ <%= out 'false' %>
34
+
35
+ <%= run "Cl.new('owners').run(%w(add --skip-notifications))" %>
36
+
37
+ <%= out 'false' %>
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', note: 'needs to be a group'
11
+ end
12
+ rb
13
+ -%>
14
+
15
+ <%= run "Cl.new('owners').run(%w(add --help))" %>
16
+
17
+ <%= out sq(<<-'str')
18
+ Usage: owners add [options]
19
+
20
+ Options:
21
+
22
+ --to GROUP type: string, note: needs to be a group
23
+ --help Get help on this command
24
+ str
25
+ %>
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', 'Target group to add owners to'
11
+
12
+ def run
13
+ p opts: opts, to: to, to?: to?
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --to one))" %>
20
+
21
+ <%= out '{:opts=>{:to=>"one"}, :to=>"one", :to?=>true}' %>
22
+
23
+ <%= run "Cl.new('owners').run(%w(add --help))" %>
24
+
25
+ <%= out sq(<<-'str')
26
+ Usage: owners add [options]
27
+
28
+ Options:
29
+
30
+ --to GROUP Target group to add owners to (type: string)
31
+ --help Get help on this command
32
+ str
33
+ %>
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ # depending on its arity the block can receive:
11
+ #
12
+ # * value
13
+ # * value, name
14
+ # * value, name, type
15
+ # * value, name, type, opts
16
+ opt '--to GROUP' do |value|
17
+ opts[:to] = "group-#{value}"
18
+ end
19
+
20
+ def run
21
+ p to: to
22
+ end
23
+ end
24
+ rb
25
+ -%>
26
+
27
+ <%= run "Cl.new('owners').run(%w(add --to one))" %>
28
+
29
+ <%= out '{:to=>"group-one"}' %>
30
+
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--retries COUNT', type: :integer, min: 1, max: 5
11
+
12
+ def run
13
+ p retries: retries
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --retries 1))" %>
20
+
21
+ <%= out '{:retries=>1}' %>
22
+
23
+ <%= run "Cl.new('owners').run(%w(add --retries 10))" %>
24
+
25
+ <%= out sq(<<-'str')
26
+ Out of range: retries (min: 1, max: 5)
27
+
28
+ Usage: owners add [options]
29
+
30
+ Options:
31
+
32
+ --retries COUNT type: integer, min: 1, max: 5
33
+ --help Get help on this command
34
+ str
35
+ %>
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ module Cmd
6
+ class One < Cl::Cmd
7
+ register :one
8
+ end
9
+
10
+ class Two < Cl::Cmd
11
+ register :two
12
+ end
13
+ end
14
+ rb
15
+ -%>
16
+
17
+ <%= run 'p Cl::Cmd[:one]' %> <%= out 'Cmd::One', short: true %>
18
+ <%= run 'p Cl::Cmd[:two]' %> <%= out 'Cmd::Two', short: true %>
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ require 'cl'
6
+
7
+ class Add < Cl::Cmd
8
+ register :add
9
+
10
+ opt '--to GROUP', required: true
11
+
12
+ def run
13
+ p to: to
14
+ end
15
+ end
16
+ rb
17
+ -%>
18
+
19
+ <%= run "Cl.new('owners').run(%w(add --to one))" %>
20
+
21
+ <%= out '{:to=>"one"}' %>
22
+
23
+ <%= run "Cl.new('owners').run(%w(add))" %>
24
+
25
+ <%= out sq(<<-'str')
26
+ Missing required option: to
27
+
28
+ Usage: owners add [options]
29
+
30
+ Options:
31
+
32
+ --to GROUP type: string, required
33
+ --help Get help on this command
34
+ str
35
+ %>
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path('lib')
3
+
4
+ <%= run sq(<<-'rb')
5
+ class Add < Cl::Cmd
6
+ register :add
7
+
8
+ # read DNF, i.e. "token OR user AND pass
9
+ required :token, [:user, :pass]
10
+
11
+ opt '--token TOKEN'
12
+ opt '--user NAME'
13
+ opt '--pass PASS'
14
+
15
+ def run
16
+ p token: token, user: user, pass: pass
17
+ end
18
+ end
19
+ rb
20
+ -%>
21
+
22
+ <%= run "Cl.new('owners').run(%w(add --token token))" %>
23
+
24
+ <%= out '{:token=>"token", :user=>nil, :pass=>nil}' %>
25
+
26
+ <%= run "Cl.new('owners').run(%w(add --user user --pass pass))" %>
27
+
28
+ <%= out '{:token=>nil, :user=>"user", :pass=>"pass"}' %>
29
+
30
+ <%= run "Cl.new('owners').run(%w(add))" %>
31
+
32
+ <%= out sq(<<-'str')
33
+ Missing options: token, or user and pass
34
+
35
+ Usage: owners add [options]
36
+
37
+ Options:
38
+
39
+ Either token, or user and pass are required.
40
+
41
+ --token TOKEN type: string
42
+ --user NAME type: string
43
+ --pass PASS type: string
44
+ --help Get help on this command
45
+ str
46
+ %>