cl 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile.lock +1 -1
- data/lib/cl/cmd.rb +5 -1
- data/lib/cl/errors.rb +15 -0
- data/lib/cl/runner/default.rb +2 -0
- data/lib/cl/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 023c11a89274f2bdacc6ce33042df713e9fdf4cf4a65570e1d27499f733f993c
|
4
|
+
data.tar.gz: f6446a52bfc1f52d4733249690fc8e8a67b18b110a2e283a2756a829be11e26b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80508a712619113a2a6d7b95c73e45c5584f14432f5dc93a6196e18f1a82eafd17607f0ec0e74c094a5c1ba1d0bc2b4911c1b46aaec2ca9d87979320e40ad6bd
|
7
|
+
data.tar.gz: f5e53adf26746f03386e1270945935b0f58012f62c36fa04dbaa1179fb1fb4e0250fcb305adab85cdafa5757ada6af27fe2ace1133881574ce550800861ac8d9
|
data/Gemfile.lock
CHANGED
data/lib/cl/cmd.rb
CHANGED
@@ -17,7 +17,7 @@ class Cl
|
|
17
17
|
extend Dsl
|
18
18
|
|
19
19
|
class << self
|
20
|
-
include Merge, Underscore
|
20
|
+
include Merge, Suggest, Underscore
|
21
21
|
|
22
22
|
inherited = ->(const) do
|
23
23
|
const.register [registry_key, underscore(const.name.split('::').last)].compact.join(':') if const.name
|
@@ -35,6 +35,10 @@ class Cl
|
|
35
35
|
opts = merge(ctx.config[registry_key], opts) if ctx.config[registry_key]
|
36
36
|
[args, opts || {}]
|
37
37
|
end
|
38
|
+
|
39
|
+
def suggestions(opt)
|
40
|
+
suggest(opts.map(&:name), opt.sub(/^--/, ''))
|
41
|
+
end
|
38
42
|
end
|
39
43
|
|
40
44
|
opt '--help', 'Get help on this command'
|
data/lib/cl/errors.rb
CHANGED
@@ -4,6 +4,7 @@ class Cl
|
|
4
4
|
class Error < StandardError
|
5
5
|
MSGS = {
|
6
6
|
unknown_cmd: 'Unknown command: %s',
|
7
|
+
unknown_option: 'Unknown option: %s',
|
7
8
|
missing_args: 'Missing arguments (given: %s, required: %s)',
|
8
9
|
too_many_args: 'Too many arguments (given: %s, allowed: %s)',
|
9
10
|
wrong_type: 'Wrong argument type (given: %s, expected: %s)',
|
@@ -38,6 +39,20 @@ class Cl
|
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
42
|
+
class UnknownOption < Error
|
43
|
+
attr_reader :cmd, :opt
|
44
|
+
|
45
|
+
def initialize(cmd, str)
|
46
|
+
@cmd = cmd
|
47
|
+
@opt = str.sub('invalid option: ', '')
|
48
|
+
super(:unknown_option, opt)
|
49
|
+
end
|
50
|
+
|
51
|
+
def suggestions
|
52
|
+
cmd.suggestions(opt)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
41
56
|
class RequiredOpts < OptionError
|
42
57
|
def initialize(opts)
|
43
58
|
msg = opts.size == 1 ? :required_opt : :required_opts
|
data/lib/cl/runner/default.rb
CHANGED
data/lib/cl/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Fuchs
|
@@ -170,8 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
170
|
- !ruby/object:Gem::Version
|
171
171
|
version: '0'
|
172
172
|
requirements: []
|
173
|
-
|
174
|
-
rubygems_version: 2.6.13
|
173
|
+
rubygems_version: 3.0.3
|
175
174
|
signing_key:
|
176
175
|
specification_version: 4
|
177
176
|
summary: Object-oriented OptionParser based CLI support
|