optparse2 0.4.3 → 0.4.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/lib/optparse2/version.rb +1 -1
- data/lib/optparse2.rb +17 -4
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 12ed6158390436ca25a3f47b01614d16ffd0cf4bca06b2f1cae376e38a947ce9
|
|
4
|
+
data.tar.gz: 8fc0ae12b3a01f0c2f12b46bd09169d248ed48cdafab694c026a63d69bfae712
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 55041cdb12c60bfa3bdfcf1849db88eb5ca8c68f778f175084ee66dc98b838c580726039d0e2dab25a79afd4d552cb8923900c71ed95fb558b1748ef1fc26cd7
|
|
7
|
+
data.tar.gz: 2d92f8714d75f5f166c4a09ca0c2ec4447a6a0deed83ea8fc4e18d9696754cdc5409466c645d66f43492eeb1d9187c07db1adbe734bdc34d7bc51f237e600a1e
|
data/lib/optparse2/version.rb
CHANGED
data/lib/optparse2.rb
CHANGED
|
@@ -136,6 +136,10 @@ class OptParse2
|
|
|
136
136
|
argv2 = argv2.each_slice(2).map { _2 }
|
|
137
137
|
|
|
138
138
|
if @rest
|
|
139
|
+
if argv2.length < @rest.fetch(:required, 0)
|
|
140
|
+
raise ParseError, "at least #{@rest[:required]} trailing arguments required (only got #{argv2.length})", caller(1)
|
|
141
|
+
end
|
|
142
|
+
|
|
139
143
|
argv2 = @rest[:block].call(argv2)
|
|
140
144
|
into[@rest[:key]] = argv2 if @rest[:key]
|
|
141
145
|
elsif !argv2.empty? && self.raise_unknown && !@positional.empty?
|
|
@@ -221,8 +225,17 @@ class OptParse2
|
|
|
221
225
|
@positional.append sw
|
|
222
226
|
end
|
|
223
227
|
|
|
224
|
-
def rest(name, description, &block)
|
|
225
|
-
|
|
228
|
+
def rest(name, *description, key: name, required: 0, &block)
|
|
229
|
+
title = "#{'[' if required.zero?}#{name} ...#{']' if required.zero?}"
|
|
230
|
+
banner.concat " #{title}" if pos_set_banner
|
|
231
|
+
title += " (#{required} arg minimum)" if required > 0
|
|
232
|
+
|
|
233
|
+
on sprintf "%s%-*s %s", summary_indent, summary_width, title, description.first
|
|
234
|
+
description[1..].each do |descr|
|
|
235
|
+
on sprintf "%s%-*s %s", summary_indent, summary_width, '', descr
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
@rest = { name:, key:, required: required || 0, block: }
|
|
226
239
|
end
|
|
227
240
|
end
|
|
228
241
|
|
|
@@ -232,7 +245,7 @@ require_relative 'optparse2/pathname'
|
|
|
232
245
|
|
|
233
246
|
# $* << '-tFOO' << '--no-cache' << '-x'
|
|
234
247
|
# $*.replace %w[123 lol what -t10 is up here]
|
|
235
|
-
$*.replace %w[1 -t3 b
|
|
248
|
+
$*.replace %w[1 -t3 b -h ]
|
|
236
249
|
|
|
237
250
|
OPTS={}
|
|
238
251
|
OptParse2.new do |op|
|
|
@@ -241,7 +254,7 @@ OptParse2.new do |op|
|
|
|
241
254
|
op.pos 'file', Integer, 'sets the file name', 'is also pretty cool', 1..1000, required: true do it * 2 end
|
|
242
255
|
op.pos '[start[-end]]', 'things to do', key: 'line', default: 123
|
|
243
256
|
|
|
244
|
-
|
|
257
|
+
op.rest 'message', 'Message to submit', 'pretty coo', required: 1 do it.join ' ' end
|
|
245
258
|
op.parse! into: OPTS
|
|
246
259
|
p ["finish: ", OPTS, $*]
|
|
247
260
|
end
|