optopus 0.1.6 → 0.1.7

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 (3) hide show
  1. data/README +3 -0
  2. data/lib/optopus.rb +22 -9
  3. metadata +5 -5
data/README CHANGED
@@ -37,6 +37,9 @@ gem install optopus
37
37
  desc 'access timestamp'
38
38
  option :timestamp, '-T', '--timestamp TIME', :type => Time, :required => true
39
39
 
40
+ desc 'resource record'
41
+ option :record, '-R', '--record RECORD', :type => Array, :multiple => true
42
+
40
43
  # read yaml config file and overwrite options
41
44
  config_file '-c', '--config-file FILE'
42
45
 
data/lib/optopus.rb CHANGED
@@ -92,6 +92,10 @@ module Optopus
92
92
  def ambiguous_argument
93
93
  raise OptionParser::AmbiguousArgument.new(*@args)
94
94
  end
95
+
96
+ def not_given
97
+ raise OptionParser::NotGiven.new(*@args)
98
+ end
95
99
  end # CheckerContext
96
100
 
97
101
  class Options
@@ -109,13 +113,13 @@ module Optopus
109
113
  def release=(v) ; @parser.release = v ; end
110
114
 
111
115
  def add(name, args, desc, block)
112
- args, defval, required = fix_args(args, desc)
113
- @opts_args << [name.to_sym, args, defval, block, required]
116
+ args, defval, required, multiple = fix_args(args, desc)
117
+ @opts_args << [name.to_sym, args, defval, block, required, multiple]
114
118
  end
115
119
 
116
120
  def add_file(args, desc)
117
121
  raise 'two or more config_file is defined' if @file_args
118
- args, defval, required = fix_args(args, desc)
122
+ args, defval, required, multiple = fix_args(args, desc)
119
123
  @file_args = args
120
124
  end
121
125
 
@@ -138,7 +142,7 @@ module Optopus
138
142
  config = YAML.load_file(v)
139
143
  options.instance_variable_set(:@__config_file__, config)
140
144
 
141
- @opts_args.each do |name, args, defval, block, required|
145
+ @opts_args.each do |name, args, defval, block, required, multiple|
142
146
  if args[1].kind_of?(String) and args[1] =~ /-+([^\s=]+)/
143
147
  key = $1
144
148
  else
@@ -158,20 +162,27 @@ module Optopus
158
162
  end
159
163
 
160
164
  value = conv.call(value) if conv
161
-
165
+
162
166
  options[name] = value
163
167
  end
164
168
  end
165
169
  end
166
170
 
167
- @opts_args.each do |name, args, defval, block, required|
171
+ @opts_args.each do |name, args, defval, block, required, multiple|
168
172
  options[name] = defval unless defval.nil?
169
173
  has_arg_v = (args.first == '-v')
170
174
  has_arg_h = (args.first == '-h')
171
175
 
172
176
  @parser.on(*args) do |*v|
173
177
  value = v.first || true
174
- options[name] = value
178
+
179
+ if multiple
180
+ options[name] ||= []
181
+ options[name] << value
182
+ else
183
+ options[name] = value
184
+ end
185
+
175
186
  CheckerContext.evaluate(v, value, &block) if block
176
187
  end
177
188
  end
@@ -193,7 +204,7 @@ module Optopus
193
204
 
194
205
  @parser.parse!
195
206
 
196
- @opts_args.each do |name, args, defval, block, required|
207
+ @opts_args.each do |name, args, defval, block, required, multiple|
197
208
  if required and not options.has_key?(name)
198
209
  raise OptionParser::NotGiven, args.first
199
210
  end
@@ -214,17 +225,19 @@ module Optopus
214
225
  def fix_args(args, desc)
215
226
  defval = nil
216
227
  required = false
228
+ multiple = false
217
229
 
218
230
  if args.last.kind_of?(Hash)
219
231
  hash = args.pop
220
232
  args = (args.slice(0, 2) + [hash[:type], hash[:desc] || desc]).select {|i| i }
221
233
  defval = hash[:default]
222
234
  required = hash[:required]
235
+ multiple = hash[:multiple]
223
236
  elsif desc
224
237
  args = args + [desc]
225
238
  end
226
239
 
227
- return [args, defval, required]
240
+ return [args, defval, required, multiple]
228
241
  end
229
242
  end # Options
230
243
  end # Optopus
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optopus
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 6
10
- version: 0.1.6
9
+ - 7
10
+ version: 0.1.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - winebarrel
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-03 00:00:00 Z
18
+ date: 2011-11-06 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description:
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
58
  requirements: []
59
59
 
60
60
  rubyforge_project:
61
- rubygems_version: 1.8.11
61
+ rubygems_version: 1.8.1
62
62
  signing_key:
63
63
  specification_version: 3
64
64
  summary: optopus is an easy-to-use option purser.