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.
- checksums.yaml +4 -4
- data/README.md +7 -5
- data/lib/optsparser_generator.rb +11 -3
- metadata +21 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f218149d8defc098cca00b8c115c05bb6fda886b0db374e31cb2365dd5e4a53b
|
4
|
+
data.tar.gz: d1114b0ba04af4c3a0da59d5971d02f054796d0cb3b2cd94fdb695afad3f5b20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
40
|
-
* __values
|
41
|
-
* __short
|
42
|
-
* __class
|
43
|
-
* __proc
|
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.
|
data/lib/optsparser_generator.rb
CHANGED
@@ -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
|
-
'--
|
10
|
+
'--proc',
|
11
|
+
'--required',
|
10
12
|
'--short',
|
11
|
-
'--
|
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
|
+
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:
|
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: '
|
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: '
|
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
|
-
|
108
|
-
|
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.
|
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.
|
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: []
|