optparse2 0.7.3 → 0.7.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/switch-helpers.rb +15 -0
- data/lib/optparse2/version.rb +1 -1
- data/lib/optparse2.rb +5 -9
- 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: 1fb6261613557a808dfda4002a86d4218d955804583135a3489ce5de01ba0e0e
|
|
4
|
+
data.tar.gz: babfce64dd51938c50999db68237a920a9270701c85b415e5fde510796134189
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b7b7521fc75776437521cbf73fc024fc15ffa2f1a5b59ed7c43319f4fa8b103083e7e8eced9ae63d74475d741d49f84b43f4413cd806ceb41199223bd545ee0e
|
|
7
|
+
data.tar.gz: ef7eb6f76bd62d96d293303aed61d3ee884212145c6507cb373877b6fa19005c6bc5e6be6ce2c328ed963c11fee6b931c4dbbcdb68fbb2ef29d9fa04ff33d631
|
|
@@ -136,10 +136,25 @@ class OptParse2
|
|
|
136
136
|
self.switch_name = val
|
|
137
137
|
end
|
|
138
138
|
|
|
139
|
+
# Required arguments must be supplied by the user. They conflict with `default` options, and
|
|
140
|
+
# cause an error if both required and default are specified
|
|
141
|
+
def set_required(required)
|
|
142
|
+
if default?
|
|
143
|
+
raise ArgumentError, 'cannot require an argument with a default value'
|
|
144
|
+
end
|
|
145
|
+
@required = required
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def required? = @required
|
|
149
|
+
|
|
139
150
|
# Default values of switches are used when the switch is never passed in.
|
|
140
151
|
# If the `value` that's provided doesn't respond to `.call`, it's converted to a proc.
|
|
141
152
|
# If `bypass` is truthy, then the default value is never passed to the block's proc (if any)
|
|
142
153
|
def set_default(value, description, bypass)
|
|
154
|
+
if required?
|
|
155
|
+
raise ArgumentError, 'cannot supply a default value for a required argument'
|
|
156
|
+
end
|
|
157
|
+
|
|
143
158
|
if @arg.nil? && value != true && !bypass
|
|
144
159
|
raise ArgumentError, "Cannot supply a non-true default value to a flag which takes no arguments", caller(4)
|
|
145
160
|
end
|
data/lib/optparse2/version.rb
CHANGED
data/lib/optparse2.rb
CHANGED
|
@@ -18,7 +18,6 @@ class OptParse2
|
|
|
18
18
|
def initialize(...)
|
|
19
19
|
@defaults = Set[]
|
|
20
20
|
@positional = []
|
|
21
|
-
@required = Set[]
|
|
22
21
|
@rest = nil
|
|
23
22
|
@group = nil
|
|
24
23
|
self.pos_set_banner = OptParse2.pos_set_banner
|
|
@@ -55,12 +54,7 @@ class OptParse2
|
|
|
55
54
|
not_style.set_hidden if hidden
|
|
56
55
|
end
|
|
57
56
|
|
|
58
|
-
if required
|
|
59
|
-
unless nodefault
|
|
60
|
-
raise ArgumentError, "cannot supply both a default with required: true"
|
|
61
|
-
end
|
|
62
|
-
@required << sw.switch_name
|
|
63
|
-
end
|
|
57
|
+
sw.set_required true if required
|
|
64
58
|
|
|
65
59
|
if nodefault && default_description != nil
|
|
66
60
|
raise ArgumentError, "default: not supplied, but default_description: given"
|
|
@@ -147,8 +141,10 @@ class OptParse2
|
|
|
147
141
|
end
|
|
148
142
|
|
|
149
143
|
private def ensure_all_required_arguments_were_supplied!(context)
|
|
150
|
-
|
|
151
|
-
|
|
144
|
+
visit :each_option do |sw|
|
|
145
|
+
next unless sw.required?
|
|
146
|
+
key = sw.switch_name.to_sym
|
|
147
|
+
raise ParseError, "required option '#{key}' not provided" unless context.key? key
|
|
152
148
|
end
|
|
153
149
|
end
|
|
154
150
|
|