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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 231baf4fb3c4a278ea945a8bcff14e90decf66d13b37c25659cfc364ae9c0599
4
- data.tar.gz: ede27c9be0e8bd48f9efe7358d716015d555a4f26544823354da0f005cb871ae
3
+ metadata.gz: 1fb6261613557a808dfda4002a86d4218d955804583135a3489ce5de01ba0e0e
4
+ data.tar.gz: babfce64dd51938c50999db68237a920a9270701c85b415e5fde510796134189
5
5
  SHA512:
6
- metadata.gz: 7365315d5bf866353e233f5771057eb709871ad75d320ac979b860d5d6625cdcbb315cdc073eb6a79a0542c33025e320f77bbacde1101f9c641cf4b41dbafb30
7
- data.tar.gz: 619232fed57b4670346be829b7d4afac06748f117b415eeaabe71be96f57a5870b0d32a8b3b5d222b70b8c432abfeed6b5acf6d701d38c0ca00dc395c221200e
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class OptParse2
4
- VERSION = "0.7.3"
4
+ VERSION = "0.7.4"
5
5
  end
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
- @required.each do |key|
151
- raise ParseError, "required option '#{key}' not provided" unless context.key? key.to_sym
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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optparse2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - SamW