travis-cl 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +134 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +59 -0
- data/MIT_LICENSE.md +21 -0
- data/README.md +1283 -0
- data/cl.gemspec +30 -0
- data/examples/README.md +22 -0
- data/examples/_src/args/cast.erb.rb +100 -0
- data/examples/_src/args/opts.erb.rb +100 -0
- data/examples/_src/args/required.erb.rb +63 -0
- data/examples/_src/args/splat.erb.rb +55 -0
- data/examples/_src/gem.erb.rb +99 -0
- data/examples/_src/heroku.erb.rb +47 -0
- data/examples/_src/rakeish.erb.rb +54 -0
- data/examples/_src/readme/abstract.erb.rb +27 -0
- data/examples/_src/readme/alias.erb.rb +22 -0
- data/examples/_src/readme/arg.erb.rb +21 -0
- data/examples/_src/readme/arg_array.erb.rb +21 -0
- data/examples/_src/readme/arg_type.erb.rb +23 -0
- data/examples/_src/readme/args_splat.erb.rb +55 -0
- data/examples/_src/readme/array.erb.rb +21 -0
- data/examples/_src/readme/basic.erb.rb +72 -0
- data/examples/_src/readme/default.erb.rb +21 -0
- data/examples/_src/readme/deprecated.erb.rb +21 -0
- data/examples/_src/readme/deprecated_alias.erb.rb +21 -0
- data/examples/_src/readme/description.erb.rb +60 -0
- data/examples/_src/readme/downcase.erb.rb +21 -0
- data/examples/_src/readme/enum.erb.rb +35 -0
- data/examples/_src/readme/example.erb.rb +25 -0
- data/examples/_src/readme/format.erb.rb +35 -0
- data/examples/_src/readme/internal.erb.rb +28 -0
- data/examples/_src/readme/negate.erb.rb +37 -0
- data/examples/_src/readme/note.erb.rb +25 -0
- data/examples/_src/readme/opts.erb.rb +33 -0
- data/examples/_src/readme/opts_block.erb.rb +30 -0
- data/examples/_src/readme/range.erb.rb +35 -0
- data/examples/_src/readme/registry.erb.rb +18 -0
- data/examples/_src/readme/required.erb.rb +35 -0
- data/examples/_src/readme/requireds.erb.rb +46 -0
- data/examples/_src/readme/requires.erb.rb +35 -0
- data/examples/_src/readme/runner.erb.rb +29 -0
- data/examples/_src/readme/runner_custom.erb.rb +25 -0
- data/examples/_src/readme/secret.erb.rb +22 -0
- data/examples/_src/readme/see.erb.rb +25 -0
- data/examples/_src/readme/type.erb.rb +21 -0
- data/examples/args/cast +98 -0
- data/examples/args/opts +98 -0
- data/examples/args/required +62 -0
- data/examples/args/splat +58 -0
- data/examples/gem +97 -0
- data/examples/heroku +48 -0
- data/examples/rakeish +50 -0
- data/examples/readme/abstract +28 -0
- data/examples/readme/alias +21 -0
- data/examples/readme/arg +20 -0
- data/examples/readme/arg_array +20 -0
- data/examples/readme/arg_type +22 -0
- data/examples/readme/args_splat +58 -0
- data/examples/readme/array +20 -0
- data/examples/readme/basic +67 -0
- data/examples/readme/default +20 -0
- data/examples/readme/deprecated +20 -0
- data/examples/readme/deprecated_alias +20 -0
- data/examples/readme/description +56 -0
- data/examples/readme/downcase +20 -0
- data/examples/readme/enum +33 -0
- data/examples/readme/example +21 -0
- data/examples/readme/format +33 -0
- data/examples/readme/internal +24 -0
- data/examples/readme/negate +44 -0
- data/examples/readme/note +21 -0
- data/examples/readme/opts +31 -0
- data/examples/readme/opts_block +29 -0
- data/examples/readme/range +33 -0
- data/examples/readme/registry +15 -0
- data/examples/readme/required +33 -0
- data/examples/readme/requireds +46 -0
- data/examples/readme/requires +33 -0
- data/examples/readme/runner +30 -0
- data/examples/readme/runner_custom +22 -0
- data/examples/readme/secret +21 -0
- data/examples/readme/see +21 -0
- data/examples/readme/type +20 -0
- data/lib/cl/arg.rb +79 -0
- data/lib/cl/args.rb +92 -0
- data/lib/cl/cast.rb +55 -0
- data/lib/cl/cmd.rb +74 -0
- data/lib/cl/config/env.rb +52 -0
- data/lib/cl/config/files.rb +34 -0
- data/lib/cl/config.rb +30 -0
- data/lib/cl/ctx.rb +36 -0
- data/lib/cl/dsl.rb +182 -0
- data/lib/cl/errors.rb +119 -0
- data/lib/cl/help/cmd.rb +118 -0
- data/lib/cl/help/cmds.rb +26 -0
- data/lib/cl/help/format.rb +69 -0
- data/lib/cl/help/table.rb +58 -0
- data/lib/cl/help/usage.rb +26 -0
- data/lib/cl/help.rb +37 -0
- data/lib/cl/helper/suggest.rb +10 -0
- data/lib/cl/helper.rb +47 -0
- data/lib/cl/opt.rb +276 -0
- data/lib/cl/opts/validate.rb +117 -0
- data/lib/cl/opts.rb +114 -0
- data/lib/cl/parser/format.rb +63 -0
- data/lib/cl/parser.rb +70 -0
- data/lib/cl/runner/default.rb +86 -0
- data/lib/cl/runner/multi.rb +34 -0
- data/lib/cl/runner.rb +10 -0
- data/lib/cl/ui.rb +146 -0
- data/lib/cl/version.rb +3 -0
- data/lib/cl.rb +62 -0
- metadata +177 -0
@@ -0,0 +1,35 @@
|
|
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
|
+
opt '--to GROUP'
|
9
|
+
opt '--other GROUP', requires: :to
|
10
|
+
|
11
|
+
def run
|
12
|
+
p to: to, other: other
|
13
|
+
end
|
14
|
+
end
|
15
|
+
rb
|
16
|
+
-%>
|
17
|
+
|
18
|
+
<%= run "Cl.new('owners').run(%w(add --to one --other two))" %>
|
19
|
+
|
20
|
+
<%= out '{:to=>"one", :other=>"two"}' %>
|
21
|
+
|
22
|
+
<%= run "Cl.new('owners').run(%w(add --other two))" %>
|
23
|
+
|
24
|
+
<%= out sq(<<-'str')
|
25
|
+
Missing option: to (required by other)
|
26
|
+
|
27
|
+
Usage: owners add [options]
|
28
|
+
|
29
|
+
Options:
|
30
|
+
|
31
|
+
--to GROUP type: string
|
32
|
+
--other GROUP type: string, requires: to
|
33
|
+
--help Get help on this command
|
34
|
+
str
|
35
|
+
%>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
<%= run sq(<<-'rb')
|
5
|
+
module Git
|
6
|
+
class Pull < Cl::Cmd
|
7
|
+
register :'git:pull'
|
8
|
+
|
9
|
+
arg :branch
|
10
|
+
|
11
|
+
def run
|
12
|
+
p cmd: registry_key, args: args
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
rb
|
17
|
+
-%>
|
18
|
+
|
19
|
+
# With this class registered (and assuming the executable that calls `Cl` is
|
20
|
+
# `bin/run`) the default runner would recognize and run it:
|
21
|
+
#
|
22
|
+
# $ bin/run git:pull master # instantiates Git::Pull, and passes ["master"] as args
|
23
|
+
# $ bin/run git pull master # does the same
|
24
|
+
|
25
|
+
<%= run "Cl.new('run').run(%w(git:pull master))" %>
|
26
|
+
<%= out '{:cmd=>:"git:pull", :args=>["master"]}' %>
|
27
|
+
|
28
|
+
<%= run "Cl.new('run').run(%w(git pull master))" %>
|
29
|
+
<%= out '{:cmd=>:"git:pull", :args=>["master"]}' %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<%= run sq(<<-'rb')
|
2
|
+
# anywhere in your library
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
class Runner
|
7
|
+
Cl::Runner.register :custom, self
|
8
|
+
|
9
|
+
def initialize(ctx, args)
|
10
|
+
# ...
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
const = identify_cmd_class_from_args
|
15
|
+
const.new(ctx, args).run
|
16
|
+
end
|
17
|
+
end
|
18
|
+
rb
|
19
|
+
-%>
|
20
|
+
|
21
|
+
# in bin/run
|
22
|
+
Cl.new('run', runner: :custom).run(ARGV)
|
23
|
+
|
24
|
+
<% run "p Cl.new('run', runner: :custom).runner([]).class" %>
|
25
|
+
<% out 'Runner' %>
|
@@ -0,0 +1,22 @@
|
|
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
|
+
opt '--pass PASS', secret: true
|
9
|
+
|
10
|
+
def run
|
11
|
+
p(
|
12
|
+
secret?: self.class.opts[:pass].secret?,
|
13
|
+
tainted?: pass
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
rb
|
18
|
+
-%>
|
19
|
+
|
20
|
+
<%= run "Cl.new('owners').run(%w(add --pass pass))" %>
|
21
|
+
|
22
|
+
<%= out '{:secret?=>true, :tainted?=>true}' %>
|
@@ -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', see: 'https://docs.io/cli/owners/add'
|
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, see: https://docs.io/cli/owners/add
|
23
|
+
--help Get help on this command
|
24
|
+
str
|
25
|
+
%>
|
@@ -0,0 +1,21 @@
|
|
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
|
+
opt '--active BOOL', type: :boolean
|
9
|
+
opt '--retries INT', type: :integer
|
10
|
+
opt '--sleep FLOAT', type: :float
|
11
|
+
|
12
|
+
def run
|
13
|
+
p active: active.class, retries: retries.class, sleep: sleep.class
|
14
|
+
end
|
15
|
+
end
|
16
|
+
rb
|
17
|
+
-%>
|
18
|
+
|
19
|
+
<%= run "Cl.new('owners').run(%w(add --active yes --retries 1 --sleep 0.1))" %>
|
20
|
+
|
21
|
+
<%= out "{:active=>TrueClass, :retries=>#{RUBY_VERSION < '2.4' ? 'Fixnum' : 'Integer'}, :sleep=>Float}" %>
|
data/examples/args/cast
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
module Cast
|
7
|
+
class Bool < Cl::Cmd
|
8
|
+
register :bool
|
9
|
+
|
10
|
+
arg :bool, type: :bool
|
11
|
+
|
12
|
+
def run
|
13
|
+
p cmd: registry_key, bool: bool
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Types < Cl::Cmd
|
18
|
+
register :types
|
19
|
+
|
20
|
+
arg :a, type: :bool
|
21
|
+
arg :b, type: :int
|
22
|
+
arg :c, type: :float
|
23
|
+
arg :d
|
24
|
+
|
25
|
+
def run
|
26
|
+
p cmd: registry_key, a: a, b: b, c: c, d: d
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Cl.new($0).run(%w(bool on))
|
32
|
+
|
33
|
+
# Output:
|
34
|
+
#
|
35
|
+
# {:cmd=>:bool, :bool=>true}
|
36
|
+
|
37
|
+
Cl.new($0).run(%w(types true 1 1.2 foo))
|
38
|
+
|
39
|
+
# Output:
|
40
|
+
#
|
41
|
+
# {:cmd=>:types, :a=>true, :b=>1, :c=>1.2, :d=>"foo"}
|
42
|
+
|
43
|
+
Cl.new($0).run(%w(types true 1 1.2 foo bar))
|
44
|
+
|
45
|
+
# Output:
|
46
|
+
#
|
47
|
+
# Too many arguments: true 1 1.2 foo bar (given: 5, allowed: 4)
|
48
|
+
#
|
49
|
+
# Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
|
50
|
+
#
|
51
|
+
# Arguments:
|
52
|
+
#
|
53
|
+
# a type: bool
|
54
|
+
# b type: int
|
55
|
+
# c type: float
|
56
|
+
# d type: string
|
57
|
+
#
|
58
|
+
# Options:
|
59
|
+
#
|
60
|
+
# --help Get help on this command
|
61
|
+
|
62
|
+
Cl.new($0).run(%w(types true one 1.2))
|
63
|
+
|
64
|
+
# Output:
|
65
|
+
#
|
66
|
+
# Wrong argument type (given: "one", expected: int)
|
67
|
+
#
|
68
|
+
# Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
|
69
|
+
#
|
70
|
+
# Arguments:
|
71
|
+
#
|
72
|
+
# a type: bool
|
73
|
+
# b type: int
|
74
|
+
# c type: float
|
75
|
+
# d type: string
|
76
|
+
#
|
77
|
+
# Options:
|
78
|
+
#
|
79
|
+
# --help Get help on this command
|
80
|
+
|
81
|
+
Cl.new($0).run(%w(types true 1 one))
|
82
|
+
|
83
|
+
# Output:
|
84
|
+
#
|
85
|
+
# Wrong argument type (given: "one", expected: float)
|
86
|
+
#
|
87
|
+
# Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
|
88
|
+
#
|
89
|
+
# Arguments:
|
90
|
+
#
|
91
|
+
# a type: bool
|
92
|
+
# b type: int
|
93
|
+
# c type: float
|
94
|
+
# d type: string
|
95
|
+
#
|
96
|
+
# Options:
|
97
|
+
#
|
98
|
+
# --help Get help on this command
|
data/examples/args/opts
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
module Opts
|
7
|
+
class Bool < Cl::Cmd
|
8
|
+
register :bool
|
9
|
+
|
10
|
+
arg :bool, type: :bool
|
11
|
+
|
12
|
+
def run
|
13
|
+
p cmd: registry_key, bool: bool
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Types < Cl::Cmd
|
18
|
+
register :types
|
19
|
+
|
20
|
+
arg :a, type: :bool
|
21
|
+
arg :b, type: :int
|
22
|
+
arg :c, type: :float
|
23
|
+
arg :d
|
24
|
+
|
25
|
+
def run
|
26
|
+
p cmd: registry_key, a: a, b: b, c: c, d: d
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Cl.new($0).run(%w(bool on))
|
32
|
+
|
33
|
+
# Output:
|
34
|
+
#
|
35
|
+
# {:cmd=>:bool, :bool=>true}
|
36
|
+
|
37
|
+
Cl.new($0).run(%w(types true 1 1.2 foo))
|
38
|
+
|
39
|
+
# Output:
|
40
|
+
#
|
41
|
+
# {:cmd=>:types, :a=>true, :b=>1, :c=>1.2, :d=>"foo"}
|
42
|
+
|
43
|
+
Cl.new($0).run(%w(types true 1 1.2 foo bar))
|
44
|
+
|
45
|
+
# Output:
|
46
|
+
#
|
47
|
+
# Too many arguments: true 1 1.2 foo bar (given: 5, allowed: 4)
|
48
|
+
#
|
49
|
+
# Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
|
50
|
+
#
|
51
|
+
# Arguments:
|
52
|
+
#
|
53
|
+
# a type: bool
|
54
|
+
# b type: int
|
55
|
+
# c type: float
|
56
|
+
# d type: string
|
57
|
+
#
|
58
|
+
# Options:
|
59
|
+
#
|
60
|
+
# --help Get help on this command
|
61
|
+
|
62
|
+
Cl.new($0).run(%w(types true one 1.2))
|
63
|
+
|
64
|
+
# Output:
|
65
|
+
#
|
66
|
+
# Wrong argument type (given: "one", expected: int)
|
67
|
+
#
|
68
|
+
# Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
|
69
|
+
#
|
70
|
+
# Arguments:
|
71
|
+
#
|
72
|
+
# a type: bool
|
73
|
+
# b type: int
|
74
|
+
# c type: float
|
75
|
+
# d type: string
|
76
|
+
#
|
77
|
+
# Options:
|
78
|
+
#
|
79
|
+
# --help Get help on this command
|
80
|
+
|
81
|
+
Cl.new($0).run(%w(types true 1 one))
|
82
|
+
|
83
|
+
# Output:
|
84
|
+
#
|
85
|
+
# Wrong argument type (given: "one", expected: float)
|
86
|
+
#
|
87
|
+
# Usage: bin/examples types [a:bool] [b:int] [c:float] [d] [options]
|
88
|
+
#
|
89
|
+
# Arguments:
|
90
|
+
#
|
91
|
+
# a type: bool
|
92
|
+
# b type: int
|
93
|
+
# c type: float
|
94
|
+
# d type: string
|
95
|
+
#
|
96
|
+
# Options:
|
97
|
+
#
|
98
|
+
# --help Get help on this command
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
class Required < Cl::Cmd
|
7
|
+
register :required
|
8
|
+
|
9
|
+
arg :one, required: true
|
10
|
+
arg :two
|
11
|
+
|
12
|
+
def run
|
13
|
+
p cmd: registry_key, one: one, two: two
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Cl.new($0).run(%w(required one two))
|
18
|
+
|
19
|
+
# Output:
|
20
|
+
#
|
21
|
+
# {:cmd=>:required, :one=>"one", :two=>"two"}
|
22
|
+
|
23
|
+
Cl.new($0).run(%w(required one))
|
24
|
+
|
25
|
+
# Output:
|
26
|
+
#
|
27
|
+
# {:cmd=>:required, :one=>"one", :two=>nil}
|
28
|
+
|
29
|
+
Cl.new($0).run(%w(required))
|
30
|
+
|
31
|
+
# Output:
|
32
|
+
#
|
33
|
+
# Missing arguments (given: 0, required: 1)
|
34
|
+
#
|
35
|
+
# Usage: bin/examples required one [two] [options]
|
36
|
+
#
|
37
|
+
# Arguments:
|
38
|
+
#
|
39
|
+
# one type: string, required
|
40
|
+
# two type: string
|
41
|
+
#
|
42
|
+
# Options:
|
43
|
+
#
|
44
|
+
# --help Get help on this command
|
45
|
+
|
46
|
+
Cl.new($0).run(%w(required one two three))
|
47
|
+
|
48
|
+
# Output:
|
49
|
+
#
|
50
|
+
# Too many arguments: one two three (given: 3, allowed: 2)
|
51
|
+
#
|
52
|
+
# Usage: bin/examples required one [two] [options]
|
53
|
+
#
|
54
|
+
# Arguments:
|
55
|
+
#
|
56
|
+
# one type: string, required
|
57
|
+
# two type: string
|
58
|
+
#
|
59
|
+
# Options:
|
60
|
+
#
|
61
|
+
# --help Get help on this command
|
62
|
+
|
data/examples/args/splat
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
module Splat
|
7
|
+
class Left < Cl::Cmd
|
8
|
+
register :left
|
9
|
+
|
10
|
+
arg :one, type: :array, splat: true
|
11
|
+
args :two, :three
|
12
|
+
|
13
|
+
def run
|
14
|
+
p cmd: registry_key, one: one, two: two, three: three
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class Middle < Cl::Cmd
|
19
|
+
register :middle
|
20
|
+
|
21
|
+
arg :one
|
22
|
+
arg :two, type: :array, splat: true
|
23
|
+
arg :three
|
24
|
+
|
25
|
+
def run
|
26
|
+
p cmd: registry_key, one: one, two: two, three: three
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Right < Cl::Cmd
|
31
|
+
register :right
|
32
|
+
|
33
|
+
args :one, :two
|
34
|
+
arg :three, type: :array, splat: true
|
35
|
+
|
36
|
+
def run
|
37
|
+
p cmd: registry_key, one: one, two: two, three: three
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Cl.new('splat').run(%w(left foo bar baz buz))
|
43
|
+
|
44
|
+
# Output:
|
45
|
+
#
|
46
|
+
# {:cmd=>:left, :one=>["foo", "bar"], :two=>"baz", :three=>"buz"}
|
47
|
+
|
48
|
+
Cl.new('splat').run(%w(middle foo bar baz buz))
|
49
|
+
|
50
|
+
# Output:
|
51
|
+
#
|
52
|
+
# {:cmd=>:middle, :one=>"foo", :two=>["bar", "baz"], :three=>"buz"}
|
53
|
+
|
54
|
+
Cl.new('splat').run(%w(right foo bar baz buz))
|
55
|
+
|
56
|
+
# Output:
|
57
|
+
#
|
58
|
+
# {:cmd=>:right, :one=>"foo", :two=>"bar", :three=>["baz", "buz"]}
|
data/examples/gem
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
module Gem
|
7
|
+
module Release
|
8
|
+
module Cmds
|
9
|
+
class Release < Cl::Cmd
|
10
|
+
register 'release'
|
11
|
+
|
12
|
+
arg :gemspec
|
13
|
+
|
14
|
+
opt '-h', '--host HOST', 'Push to a compatible host other than rubygems.org'
|
15
|
+
opt '-k', '--key KEY', 'Rubygems API key to use'
|
16
|
+
opt '-q', '--quiet', 'Silence output'
|
17
|
+
|
18
|
+
def run
|
19
|
+
p cmd: registry_key, args: args, opts: opts
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Bump < Cl::Cmd
|
24
|
+
register 'bump'
|
25
|
+
|
26
|
+
opt '-v', '--version VERSION', 'The version to bump to [1.1.1|major|minor|patch|pre|rc|release]'
|
27
|
+
opt '--[no-]commit', 'Bump the version, but do not commit'
|
28
|
+
|
29
|
+
def run
|
30
|
+
p cmd: registry_key, args: args, opts: opts
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
Cl.new('gem').run(%w(help))
|
38
|
+
|
39
|
+
# Output:
|
40
|
+
#
|
41
|
+
# Type "gem help COMMAND [SUBCOMMAND]" for more details:
|
42
|
+
#
|
43
|
+
# gem release [gemspec] [options]
|
44
|
+
# gem bump [options]
|
45
|
+
|
46
|
+
|
47
|
+
Cl.new('gem').run(%w(help release))
|
48
|
+
# or:
|
49
|
+
#
|
50
|
+
# Cl.new('gem').run(%w(release --help)))
|
51
|
+
# Cl.new('gem').run(%w(release -h)))
|
52
|
+
#
|
53
|
+
# Output:
|
54
|
+
#
|
55
|
+
# Usage: gem release [gemspec] [options]
|
56
|
+
#
|
57
|
+
# Arguments:
|
58
|
+
#
|
59
|
+
# gemspec type: string
|
60
|
+
#
|
61
|
+
# Options:
|
62
|
+
#
|
63
|
+
# -h --host HOST Push to a compatible host other than rubygems.org (type: string)
|
64
|
+
# -k --key KEY Rubygems API key to use (type: string)
|
65
|
+
# -q --[no-]quiet Silence output
|
66
|
+
# --help Get help on this command
|
67
|
+
|
68
|
+
|
69
|
+
Cl.new('gem').run(%w(help bump))
|
70
|
+
# or:
|
71
|
+
#
|
72
|
+
# Cl.new('gem').run(%w(bump --help)))
|
73
|
+
# Cl.new('gem').run(%w(bump -h)))
|
74
|
+
#
|
75
|
+
# Output:
|
76
|
+
#
|
77
|
+
# Usage: gem bump [options]
|
78
|
+
#
|
79
|
+
# Options:
|
80
|
+
#
|
81
|
+
# -v --version VERSION The version to bump to [1.1.1|major|minor|patch|pre|rc|release] (type: string)
|
82
|
+
# --[no-]commit Bump the version, but do not commit
|
83
|
+
# --help Get help on this command
|
84
|
+
|
85
|
+
|
86
|
+
Cl.new('gem').run(%w(bump -v 1.1.1))
|
87
|
+
|
88
|
+
# Output:
|
89
|
+
#
|
90
|
+
# {:cmd=>:bump, :args=>[], :opts=>{:version=>"1.1.1"}}
|
91
|
+
|
92
|
+
|
93
|
+
Cl.new('gem').run(%w(release foo.gemspec -h host -k key -q))
|
94
|
+
|
95
|
+
# Output:
|
96
|
+
#
|
97
|
+
# {:cmd=>:release, :args=>["foo.gemspec"], :opts=>{:host=>"host", :key=>"key", :quiet=>true}}
|
data/examples/heroku
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
module Heroku
|
7
|
+
module Apps
|
8
|
+
class Create < Cl::Cmd
|
9
|
+
register 'apps:create'
|
10
|
+
|
11
|
+
arg :name, required: true
|
12
|
+
|
13
|
+
opt '-o', '--org ORG'
|
14
|
+
|
15
|
+
def run
|
16
|
+
p cmd: registry_key, args: args, opts: opts
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class List < Cl::Cmd
|
21
|
+
register 'apps:info'
|
22
|
+
|
23
|
+
opt '-a', '--app APP'
|
24
|
+
|
25
|
+
def run
|
26
|
+
p cmd: registry_key, args: args, opts: opts
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Cl.new('heroku').run(%w(apps:create name -o org))
|
33
|
+
# or:
|
34
|
+
#
|
35
|
+
# Cl.new('heroku').run(%w(apps create name -o org))
|
36
|
+
|
37
|
+
# Output:
|
38
|
+
#
|
39
|
+
# {:cmd=>:"apps:create", :args=>["name"], :opts=>{:org=>"org"}}
|
40
|
+
|
41
|
+
Cl.new('heroku').run(%w(apps:info -a app))
|
42
|
+
# or:
|
43
|
+
#
|
44
|
+
# Cl.new('heroku').run(%w(apps info -a app))
|
45
|
+
|
46
|
+
# Output:
|
47
|
+
#
|
48
|
+
# {:cmd=>:"apps:info", :args=>[], :opts=>{:app=>"app"}}
|
data/examples/rakeish
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
module Rakeish
|
7
|
+
module Db
|
8
|
+
class Create < Cl::Cmd
|
9
|
+
register 'db:create'
|
10
|
+
|
11
|
+
arg :name
|
12
|
+
|
13
|
+
def run
|
14
|
+
p cmd: registry_key, args: args, opts: opts
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class Drop < Cl::Cmd
|
19
|
+
register 'db:drop'
|
20
|
+
|
21
|
+
arg :name
|
22
|
+
|
23
|
+
opt '-f', '--force'
|
24
|
+
|
25
|
+
def run
|
26
|
+
p cmd: registry_key, args: args, opts: opts
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Migrate < Cl::Cmd
|
31
|
+
register 'db:migrate'
|
32
|
+
|
33
|
+
arg :name
|
34
|
+
|
35
|
+
opt '-v', '--version VERSION'
|
36
|
+
|
37
|
+
def run
|
38
|
+
p cmd: registry_key, args: args, opts: opts
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
Cl.new('rake', runner: :multi).run(%w(db:drop production -f db:create db:migrate production -v 1))
|
45
|
+
|
46
|
+
# Output:
|
47
|
+
#
|
48
|
+
# {:cmd=>:"db:drop", :args=>["production"], :opts=>{:force=>true}}
|
49
|
+
# {:cmd=>:"db:create", :args=>[], :opts=>{}}
|
50
|
+
# {:cmd=>:"db:migrate", :args=>["production"], :opts=>{:version=>"1"}}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'cl'
|
5
|
+
|
6
|
+
class Base < Cl::Cmd
|
7
|
+
abstract
|
8
|
+
end
|
9
|
+
|
10
|
+
class Add < Base
|
11
|
+
register :add
|
12
|
+
|
13
|
+
def run
|
14
|
+
puts 'Success'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Cl.new('owners').run(%w(add))
|
19
|
+
|
20
|
+
# Output:
|
21
|
+
#
|
22
|
+
# Success
|
23
|
+
|
24
|
+
Cl.new('owners').run(%w(base))
|
25
|
+
|
26
|
+
# Output:
|
27
|
+
#
|
28
|
+
# Unknown command: base
|