optsparser_generator 4.4 → 5.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -5
  3. data/lib/optsparser_generator.rb +11 -3
  4. metadata +21 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a46c488e646d9dd044a7532ded2d73e30b039a33941641b2a7869cad28e747f7
4
- data.tar.gz: 9aeeff83f3124af811a4e7ac07c36ce4d7482462d4bb1815dc5c2deddba52aac
3
+ metadata.gz: f218149d8defc098cca00b8c115c05bb6fda886b0db374e31cb2365dd5e4a53b
4
+ data.tar.gz: d1114b0ba04af4c3a0da59d5971d02f054796d0cb3b2cd94fdb695afad3f5b20
5
5
  SHA512:
6
- metadata.gz: f42a1fbf5276adc74bbf913d397e7d2365de057f6be342b651cdd08b7d87d8948dc5d8f401a9d7c3bf8628b267613a9b31368fb2f53b4e33fa1ef84604a420ba
7
- data.tar.gz: 06f009faa14e5be34cf0069d03a58fd8e6682839e3c86c6432de5aa3aff0b9c44c7da074d36fac9d18bde9e40c37e2d2c4a625c184e07d7284232e2c4495aabc
6
+ metadata.gz: 910ac9b4fce86962ae629848b104c25822be566b4aeed602cf81701c8cf856ee5799dd0f8c2e8b965844997c73adfece19d1a7f8c16998605f287dbca7113265
7
+ data.tar.gz: 4e664e174a1f7631988242eddd142a6945a7600653ac921e1541572424ccfe77c4e6794291324ad852c85da58195ac5f45859729b5c973b99713edb745f6e999
data/README.md CHANGED
@@ -17,6 +17,7 @@ os.default = 'value'
17
17
  os.val = 123
18
18
  os.val__values = [1, 1.5, 2, 123]
19
19
  os.val__class = Numeric
20
+ os.val__required = true
20
21
  os.bool = true
21
22
  os.bool__help = 'description of argument'
22
23
  os.bool__short = 'b'
@@ -36,11 +37,12 @@ OptParseGen.parse(os) # takes ARGV or an array
36
37
  ```
37
38
 
38
39
  ## Special values
39
- * __help defines the description for a property
40
- * __values defines possible values in an Array
41
- * __short defines the short trigger
42
- * __class defines the Class which OptionParser then tries to coerce to
43
- * __proc a Proc which will be executed to compute the value
40
+ * __help defines the description for a property
41
+ * __values defines possible values in an Array
42
+ * __short defines the short trigger
43
+ * __class defines the Class which OptionParser then tries to coerce to
44
+ * __proc a Proc which will be executed to compute the value
45
+ * __required parameter is required, raises error if missing
44
46
 
45
47
  # Version numbers
46
48
  I choose two digit version numbers.
@@ -5,11 +5,12 @@ require 'optparse'
5
5
  module OptionParserGenerator
6
6
  # Special postfixes for Hash keys
7
7
  SPECIAL_POSTFIXES = [
8
+ '--class',
8
9
  '--help',
9
- '--values',
10
+ '--proc',
11
+ '--required',
10
12
  '--short',
11
- '--class',
12
- '--proc'
13
+ '--values',
13
14
  ].freeze
14
15
 
15
16
  # Raised when not given an OpenStruct
@@ -59,6 +60,7 @@ module OptionParserGenerator
59
60
  defaults = handle_arguments(ostruct)
60
61
 
61
62
  optparser = OptionParser.new do |opts|
63
+ opts.instance_variable_set(:@required, {})
62
64
  defaults.each_pair do |key, val|
63
65
  trigger = key.to_s.tr('_', '-')
64
66
  next if trigger.end_with?(*SPECIAL_POSTFIXES)
@@ -93,8 +95,12 @@ module OptionParserGenerator
93
95
  block = proc
94
96
  end
95
97
  opts.on(*arguments) do |arg|
98
+ opts.instance_variable_get(:@required)[key] = true
96
99
  opts.instance_variable_get(:@out)[key] = block.call(arg)
97
100
  end
101
+ if defaults.special_value(key, 'required')
102
+ opts.instance_variable_get(:@required)[key] = false
103
+ end
98
104
  end
99
105
 
100
106
  unless options[:generate_no_help]
@@ -144,6 +150,7 @@ module OptionParserGenerator
144
150
  def parse!(*params, **opts)
145
151
  @out = @defaults.dup
146
152
  super
153
+ @required.reject{|k,v|v}.each{|k,v|raise OptionParser::MissingArgument, k}
147
154
  @out
148
155
  end
149
156
 
@@ -151,6 +158,7 @@ module OptionParserGenerator
151
158
  def parse(*params, **opts)
152
159
  @out = @defaults.dup
153
160
  super
161
+ @required.reject{|k,v|v}.each{|k,v|raise OptionParser::MissingArgument, k}
154
162
  @out
155
163
  end
156
164
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optsparser_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: '4.4'
4
+ version: '5.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marvin Zerulla
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-04-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -16,7 +15,7 @@ dependencies:
16
15
  requirements:
17
16
  - - "<"
18
17
  - !ruby/object:Gem::Version
19
- version: '13'
18
+ version: '14'
20
19
  - - ">="
21
20
  - !ruby/object:Gem::Version
22
21
  version: 11.2.0
@@ -26,7 +25,7 @@ dependencies:
26
25
  requirements:
27
26
  - - "<"
28
27
  - !ruby/object:Gem::Version
29
- version: '13'
28
+ version: '14'
30
29
  - - ">="
31
30
  - !ruby/object:Gem::Version
32
31
  version: 11.2.0
@@ -104,13 +103,25 @@ dependencies:
104
103
  - - ">="
105
104
  - !ruby/object:Gem::Version
106
105
  version: '0.8'
107
- description:
108
- email:
106
+ - !ruby/object:Gem::Dependency
107
+ name: ostruct
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
109
120
  executables: []
110
121
  extensions: []
111
122
  extra_rdoc_files:
112
- - README.md
113
123
  - LICENSE.md
124
+ - README.md
114
125
  files:
115
126
  - LICENSE.md
116
127
  - README.md
@@ -119,7 +130,6 @@ homepage: https://github.com/madblobfish/optionparser-generator
119
130
  licenses:
120
131
  - AGPL-1.0
121
132
  metadata: {}
122
- post_install_message:
123
133
  rdoc_options: []
124
134
  require_paths:
125
135
  - lib
@@ -127,15 +137,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
137
  requirements:
128
138
  - - ">="
129
139
  - !ruby/object:Gem::Version
130
- version: 2.0.0
140
+ version: 2.4.0
131
141
  required_rubygems_version: !ruby/object:Gem::Requirement
132
142
  requirements:
133
143
  - - ">="
134
144
  - !ruby/object:Gem::Version
135
145
  version: '0'
136
146
  requirements: []
137
- rubygems_version: 3.2.15
138
- signing_key:
147
+ rubygems_version: 3.6.9
139
148
  specification_version: 4
140
149
  summary: Generates OptionParser using an OpenStruct
141
150
  test_files: []