cyclops 0.0.3 → 0.0.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.
- checksums.yaml +4 -4
- data/ChangeLog +6 -0
- data/README +2 -2
- data/lib/cyclops.rb +9 -12
- data/lib/cyclops/option_parser_extension.rb +32 -9
- data/lib/cyclops/version.rb +1 -1
- metadata +8 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d20c8ac18e0f174a287735b1bb22d9f1d4fec432
|
|
4
|
+
data.tar.gz: 88d9a76c70d8430b3ea7310d924465c598f23dc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7b375b5da84cff2b15b5598813930e84a20e90dca93fd183ed246940daa86e268db1e2721d3110eb30cdbe5f737db583d22cbc3b99947863094fc105be82e11f
|
|
7
|
+
data.tar.gz: 214e3157759ffc2c9c7f5a0c600d9a37df16ef54cf3e64d2fb4ff90d5898379e4454e56f40fd78f8bfb7ab3f82bff76f185558c2b27cf936b9982ef32d378cc0
|
data/ChangeLog
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
= Revision history for cyclops
|
|
4
4
|
|
|
5
|
+
== 0.0.4 [2014-09-01]
|
|
6
|
+
|
|
7
|
+
* Added support for <tt>--[no-]<switch></tt>.
|
|
8
|
+
* <tt>--verbose</tt> also prints program name and version.
|
|
9
|
+
* Print error and usage on parse errors.
|
|
10
|
+
|
|
5
11
|
== 0.0.3 [2014-04-14]
|
|
6
12
|
|
|
7
13
|
* Always set symbol key in options hash.
|
data/README
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
== VERSION
|
|
4
4
|
|
|
5
|
-
This documentation refers to cyclops version 0.0.
|
|
5
|
+
This documentation refers to cyclops version 0.0.4
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
== DESCRIPTION
|
|
@@ -13,7 +13,7 @@ enough CLI libraries already...
|
|
|
13
13
|
|
|
14
14
|
== LINKS
|
|
15
15
|
|
|
16
|
-
Documentation:: https://blackwinter.github.
|
|
16
|
+
Documentation:: https://blackwinter.github.com/cyclops
|
|
17
17
|
Source code:: https://github.com/blackwinter/cyclops
|
|
18
18
|
RubyGem:: https://rubygems.org/gems/cyclops
|
|
19
19
|
|
data/lib/cyclops.rb
CHANGED
|
@@ -95,11 +95,10 @@ class Cyclops
|
|
|
95
95
|
run(arguments)
|
|
96
96
|
rescue => err
|
|
97
97
|
raise if $VERBOSE
|
|
98
|
-
abort
|
|
98
|
+
abort err.is_a?(OptionParser::ParseError) ?
|
|
99
|
+
"#{err}\n#{usage}" : "#{err.backtrace.first}: #{err} (#{err.class})"
|
|
99
100
|
ensure
|
|
100
|
-
options.each_value { |value|
|
|
101
|
-
value.close if value.is_a?(Zlib::GzipWriter)
|
|
102
|
-
}
|
|
101
|
+
options.each_value { |value| value.close if value.is_a?(Zlib::GzipWriter) }
|
|
103
102
|
end
|
|
104
103
|
|
|
105
104
|
def run(arguments)
|
|
@@ -168,14 +167,10 @@ class Cyclops
|
|
|
168
167
|
end
|
|
169
168
|
|
|
170
169
|
def open_file_or_std(file, write = false)
|
|
171
|
-
|
|
172
|
-
write ? stdout : stdin
|
|
173
|
-
else
|
|
170
|
+
file == '-' ? write ? stdout : stdin : begin
|
|
174
171
|
gz = file =~ /\.gz\z/i
|
|
175
172
|
|
|
176
|
-
|
|
177
|
-
gz ? Zlib::GzipWriter.open(file) : File.open(file, 'w')
|
|
178
|
-
else
|
|
173
|
+
write ? gz ? Zlib::GzipWriter.open(file) : File.open(file, 'w') : begin
|
|
179
174
|
quit "No such file: #{file}" unless File.readable?(file)
|
|
180
175
|
(gz ? Zlib::GzipReader : File).open(file)
|
|
181
176
|
end
|
|
@@ -186,7 +181,7 @@ class Cyclops
|
|
|
186
181
|
return unless file
|
|
187
182
|
|
|
188
183
|
if File.readable?(file)
|
|
189
|
-
@config = SafeYAML.load_file(file, :
|
|
184
|
+
@config = SafeYAML.load_file(file, deserialize_symbols: true)
|
|
190
185
|
else
|
|
191
186
|
quit "No such file: #{file}" unless default
|
|
192
187
|
end
|
|
@@ -247,7 +242,9 @@ class Cyclops
|
|
|
247
242
|
def verbose_opts(opts)
|
|
248
243
|
verbose, debug = defaults.key?(:verbose), defaults.key?(:debug)
|
|
249
244
|
|
|
250
|
-
opts.switch(:verbose, 'Print verbose output')
|
|
245
|
+
opts.switch(:verbose, 'Print verbose output') {
|
|
246
|
+
warn "#{progname} v#{version}"
|
|
247
|
+
} if verbose
|
|
251
248
|
|
|
252
249
|
msg = "; #{debug_message}" if respond_to?(:debug_message, true)
|
|
253
250
|
opts.switch(:debug, :D, "Print debug output#{msg}") if debug
|
|
@@ -30,10 +30,14 @@ class Cyclops
|
|
|
30
30
|
|
|
31
31
|
attr_accessor :cli
|
|
32
32
|
|
|
33
|
+
OPTION_RE = /(\w+)__(\w+)(\?)?\z/
|
|
34
|
+
|
|
35
|
+
SWITCH_RE = /(\w+)(\?)?\z/
|
|
36
|
+
|
|
33
37
|
KEY_POOL = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a
|
|
34
38
|
|
|
35
39
|
def keys
|
|
36
|
-
{ :
|
|
40
|
+
{ used: keys = top.short.keys, free: KEY_POOL - keys }
|
|
37
41
|
end
|
|
38
42
|
|
|
39
43
|
def separator(string = '')
|
|
@@ -55,9 +59,9 @@ class Cyclops
|
|
|
55
59
|
# the argument name ends with a question mark, the value is marked
|
|
56
60
|
# as optional.
|
|
57
61
|
def option(name, *args, &block)
|
|
58
|
-
|
|
59
|
-
sym = name.is_a?(Symbol)
|
|
62
|
+
sym = name.is_a?(Symbol)
|
|
60
63
|
|
|
64
|
+
if name =~ OPTION_RE
|
|
61
65
|
name, arg, opt = $1, $2, !!$3
|
|
62
66
|
__on_opts(name, args, sym)
|
|
63
67
|
|
|
@@ -69,7 +73,7 @@ class Cyclops
|
|
|
69
73
|
yield value if block_given?
|
|
70
74
|
}
|
|
71
75
|
else
|
|
72
|
-
on(*__on_opts(name, args), &block)
|
|
76
|
+
on(*__on_opts(name, args, sym), &block)
|
|
73
77
|
end
|
|
74
78
|
end
|
|
75
79
|
|
|
@@ -84,16 +88,35 @@ class Cyclops
|
|
|
84
88
|
#
|
|
85
89
|
# Sets the CLI's +name+ option (as a Symbol) to +true+ and calls
|
|
86
90
|
# the optional block (with no argument).
|
|
91
|
+
#
|
|
92
|
+
# If +name+ ends with a question mark, installs only the long option
|
|
93
|
+
# and sets the CLI's +name+ option (as a Symbol) to either +true+ or
|
|
94
|
+
# +false+, depending on whether <tt>--name</tt> or <tt>--no-name</tt>
|
|
95
|
+
# was given on the command line.
|
|
87
96
|
def switch(name, *args)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
sym = name.is_a?(Symbol)
|
|
98
|
+
|
|
99
|
+
name, opt = $1, !!$2 if name =~ SWITCH_RE
|
|
100
|
+
|
|
101
|
+
if opt
|
|
102
|
+
__on_opts(name, args, false)
|
|
103
|
+
args.first.insert(2, '[no-]')
|
|
104
|
+
|
|
105
|
+
on(*args) { |value|
|
|
106
|
+
cli.options[name.to_sym] = value
|
|
107
|
+
yield if block_given?
|
|
108
|
+
}
|
|
109
|
+
else
|
|
110
|
+
on(*__on_opts(name, args, sym)) {
|
|
111
|
+
cli.options[name.to_sym] = true
|
|
112
|
+
yield if block_given?
|
|
113
|
+
}
|
|
114
|
+
end
|
|
92
115
|
end
|
|
93
116
|
|
|
94
117
|
private
|
|
95
118
|
|
|
96
|
-
def __on_opts(name, args, sym
|
|
119
|
+
def __on_opts(name, args, sym)
|
|
97
120
|
args.insert(0, "-#{args[0].is_a?(Symbol) ? args.shift : name[0]}") if sym
|
|
98
121
|
args.insert(sym ? 1 : 0, "--#{name.to_s.tr('_', '-')}")
|
|
99
122
|
end
|
data/lib/cyclops/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cyclops
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jens Wille
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-09-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: highline
|
|
@@ -88,13 +88,15 @@ licenses:
|
|
|
88
88
|
metadata: {}
|
|
89
89
|
post_install_message: |2+
|
|
90
90
|
|
|
91
|
-
cyclops-0.0.
|
|
91
|
+
cyclops-0.0.4 [2014-09-01]:
|
|
92
92
|
|
|
93
|
-
*
|
|
93
|
+
* Added support for <tt>--[no-]<switch></tt>.
|
|
94
|
+
* <tt>--verbose</tt> also prints program name and version.
|
|
95
|
+
* Print error and usage on parse errors.
|
|
94
96
|
|
|
95
97
|
rdoc_options:
|
|
96
98
|
- "--title"
|
|
97
|
-
- cyclops Application documentation (v0.0.
|
|
99
|
+
- cyclops Application documentation (v0.0.4)
|
|
98
100
|
- "--charset"
|
|
99
101
|
- UTF-8
|
|
100
102
|
- "--line-numbers"
|
|
@@ -115,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
115
117
|
version: '0'
|
|
116
118
|
requirements: []
|
|
117
119
|
rubyforge_project:
|
|
118
|
-
rubygems_version: 2.
|
|
120
|
+
rubygems_version: 2.4.1
|
|
119
121
|
signing_key:
|
|
120
122
|
specification_version: 4
|
|
121
123
|
summary: A command-line option parser based on optparse.
|