Usage 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ #
2
+ # This is the simplist usage case (only required args)
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "infile outfile"
7
+
8
+ puts "infile = #{usage.infile.inspect}"
9
+ puts "outfile = #{usage.outfile.inspect}"
@@ -0,0 +1,9 @@
1
+ #
2
+ # This is illustrates handling infinite arguments
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "outfile infiles..."
7
+
8
+ puts "outfile = #{usage.outfile.inspect}"
9
+ puts "infiles = #{usage.infiles.inspect}"
@@ -0,0 +1,14 @@
1
+ #
2
+ # This illustrates the use of optional arguments. This program can
3
+ # handle 1 or 2 arguments. If there is one, then #optional_arg returns
4
+ # nil and #required_arg returns the argument. If there is two then
5
+ # #optional_arg returns the first argument and #required_arg returns the
6
+ # second.
7
+ #
8
+ require "Usage"
9
+
10
+ usage = Usage.new "required_arg [optional_arg] "
11
+
12
+ puts "required arg = #{usage.required_arg.inspect}"
13
+ puts "optional arg = #{usage.optional_arg.inspect}"
14
+
@@ -0,0 +1,21 @@
1
+ #
2
+ # This demonstrates both optional and required options. The ones surrounded by
3
+ # square brackets are optional and their arguments are included with them. The
4
+ # ones surrounded with parenthesis are required options and the arguments that
5
+ # are in there are included with them.
6
+ #
7
+ # When the usage is reported to the user, the parenthesis are not included.
8
+ #
9
+
10
+ require "Usage"
11
+
12
+ usage = Usage.new "[-y] [-x excluded_tags] (-z ztag) (-w warning_arg) files..."
13
+
14
+ puts "dash_y = #{usage.dash_y.inspect}"
15
+ puts "dash_x = #{usage.dash_x.inspect}"
16
+ puts "excluded_tags = #{usage.excluded_tags.inspect}"
17
+ puts "dash_z = #{usage.dash_y.inspect}"
18
+ puts "ztag = #{usage.ztag.inspect}"
19
+ puts "dash_w = #{usage.dash_w.inspect}"
20
+ puts "warning = #{usage.warning.inspect}"
21
+ puts "files = #{usage.files.inspect}"
@@ -0,0 +1,13 @@
1
+ #
2
+ # This illustrates how to use long options (ie. --option)
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "-x files...", <<EOT
7
+ -x,--exclusive specifies exclusive access to the files
8
+ EOT
9
+
10
+ puts "dash_x = #{usage.dash_x.inspect}"
11
+ puts "exclusive = #{usage.exclusive.inspect}"
12
+ puts "files = #{usage.files.inspect}"
13
+
@@ -0,0 +1,11 @@
1
+ #
2
+ # This sample illustrates typed arguments. The argument that
3
+ # starts with % indicates and Integer and a @ indicates a
4
+ # date/time (a Time object is produced).
5
+ #
6
+ require "Usage"
7
+
8
+ usage = Usage.new "%num_times @on_date"
9
+
10
+ puts "usage.num_times = #{usage.num_times.inspect}"
11
+ puts "on_date = #{usage.on_date.inspect}"
@@ -0,0 +1,8 @@
1
+ #
2
+ # This sample shows how to use choice arguments
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "[-a coffee|tea|milk]"
7
+
8
+ puts "dash_a = #{usage.dash_a.inspect}"
data/tests/TC_Usage.rb ADDED
@@ -0,0 +1,303 @@
1
+ require "test/unit"
2
+ require "rubygems"
3
+ require_gem "SimpleTrace", "<= 0.1.0"
4
+ require "Usage"
5
+
6
+ class TC_Usage < Test::Unit::TestCase
7
+ def testTooFewArgs
8
+ # ------ Check for too few arguments -----------------
9
+ assert_raises(UsageMod::TooFewArgError) do
10
+ usage = UsageMod::Base.new("filename", "", []).parse_args
11
+ end
12
+ end
13
+
14
+ def testTooManyArgs
15
+ # ------ Check for too many arguments ----------------
16
+ #$TRACE.set_level 9
17
+ assert_raises(UsageMod::ExtraArgError) do
18
+ usage = UsageMod::Base.new("filename", "", ["arg1", "arg2"]).parse_args
19
+ end
20
+
21
+ assert_raises(UsageMod::ExtraArgError) do
22
+ usage = UsageMod::Base.new("", "", ["arg1"]).parse_args
23
+ end
24
+ end
25
+
26
+ def testRequiredArgs
27
+ # ------ Check for argument values ---------------------
28
+ usage = UsageMod::Base.new("filename", "", ["arg"]).parse_args
29
+ assert_equal("arg", usage.filename)
30
+
31
+ usage = UsageMod::Base.new("filename num_lines", "", ["arg1", "arg2"]).parse_args
32
+ assert_equal("arg1", usage.filename)
33
+ assert_equal("arg2", usage.num_lines)
34
+ end
35
+
36
+ def testInifiniteArgs
37
+ # ------ Check for infinite argument values ---------------------
38
+ usage = UsageMod::Base.new("num_lines files... ", "", ["1", "file1", "file2", "file3"]).parse_args
39
+ assert_equal("1", usage.num_lines)
40
+ assert_equal(["file1", "file2", "file3"], usage.files)
41
+ end
42
+
43
+ def testOptionalAndRequiredArgs1Arg
44
+ # ------ Check for argument values ---------------------
45
+ #$TRACE.set_level 9 do
46
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arg"]).parse_args
47
+ assert_equal("arg", usage.arg1)
48
+ assert_equal(nil, usage.arg2)
49
+ #end
50
+ end
51
+
52
+ def testOptionalAndRequiredArgs2Args
53
+ # ------ Check for argument values ---------------------
54
+ #$TRACE.set_level 9 do
55
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arga", "argb"]).parse_args
56
+ assert_equal("arga", usage.arg1)
57
+ assert_equal("argb", usage.arg2)
58
+ #end
59
+ end
60
+
61
+ def testOneOption
62
+ usage = UsageMod::Base.new("-m", "", ["-m"]).parse_args
63
+ assert_equal(true, usage.dash_m)
64
+ end
65
+
66
+ def testOneOptionAndOneArg
67
+ usage = UsageMod::Base.new("-m filename", "", ["-m", "test1.txt"]).parse_args
68
+ assert_equal(true, usage.dash_m)
69
+ assert_equal("test1.txt", usage.filename)
70
+ end
71
+
72
+ def testOptionWithDescription
73
+ usage = UsageMod::Base.new("-m", "-m,--merge-file\tMerge the files together", ["-m"]).parse_args
74
+ assert_equal(true, usage.merge_file)
75
+ assert_equal(true, usage.dash_m)
76
+ end
77
+
78
+ def testOptionWithDescriptionUsingLongOptionName
79
+ #$TRACE.set_level 9 do
80
+ usage = UsageMod::Base.new("-m", "-m,--merge-file\tMerge the files together", ["--merge-file"]).parse_args
81
+ assert_equal(true, usage.merge_file)
82
+ assert_equal(true, usage.dash_m)
83
+ #end
84
+ end
85
+
86
+ def testIntegerArg
87
+ #$TRACE.set_level 9 do
88
+ usage = UsageMod::Base.new("%value", "", ["12"]).parse_args
89
+ assert_equal(Fixnum, usage.value.class)
90
+ assert_equal(12, usage.value)
91
+ #end
92
+ end
93
+
94
+ def testBadIntegerArg
95
+ #$TRACE.set_level 9 do
96
+ assert_raises(UsageMod::InvalidIntegerError) do
97
+ usage = UsageMod::Base.new("%value", "", ["a"]).parse_args
98
+ end
99
+ #end
100
+ end
101
+
102
+ def testGoodTimeArg
103
+ #$TRACE.set_level 9 do
104
+ usage = UsageMod::Base.new("@value", "", ["3/10/2004-10:25"]).parse_args
105
+ assert_equal(Time, usage.value.class)
106
+ assert_equal(Time.local(2004,3,10,10,25), usage.value)
107
+ #end
108
+ end
109
+
110
+ def testBadTimeArg
111
+ #$TRACE.set_level 9 do
112
+ assert_raises(UsageMod::InvalidTimeError) do
113
+ usage = UsageMod::Base.new("@value", "", ["Barf"]).parse_args
114
+ end
115
+ #end
116
+ end
117
+
118
+ def testIntegerOptionArg
119
+ #$TRACE.set_level 9 do
120
+ usage = UsageMod::Base.new("(-w %value)", "", ["-w", "12"]).parse_args
121
+ assert_equal(Fixnum, usage.value.class)
122
+ assert_equal(12, usage.value)
123
+ #end
124
+ end
125
+
126
+ def testMissingOption
127
+ assert_raises(UsageMod::MissingOptionsError) do
128
+ usage = UsageMod::Base.new("-m", "", []).parse_args
129
+ end
130
+ end
131
+
132
+ def testMissingOptionAndOneArg
133
+ assert_raises(UsageMod::MissingOptionsError) do
134
+ usage = UsageMod::Base.new("-m", "", ["test1.txt"]).parse_args
135
+ end
136
+ end
137
+
138
+ def testUnknownOption
139
+ assert_raises(UsageMod::UnknownOptionError) do
140
+ usage = UsageMod::Base.new("-m", "", ["-q"]).parse_args
141
+ end
142
+ end
143
+
144
+ def testOptionWithArg
145
+ #$TRACE.set_level(9) do
146
+ usage = UsageMod::Base.new("(-m marg)", "", ["-m", "test1.txt"]).parse_args
147
+ assert_equal(true, usage.dash_m)
148
+ assert_equal("test1.txt", usage.marg)
149
+ #end
150
+ end
151
+
152
+ def testChoicesOnRegularArg
153
+ assert_raises(UsageMod::ChoicesNotOnOptionError) do
154
+ usage = UsageMod::Base.new("a|b|c", "", []).parse_args
155
+ end
156
+ end
157
+
158
+ def testChoicesWithTypeIndicator
159
+ assert_raises(UsageMod::ChoiceNoTypeError) do
160
+ #$TRACE.set_level(9) do
161
+ usage = UsageMod::Base.new("(-m %a|b|c)", "", []).parse_args
162
+ #end
163
+ end
164
+ end
165
+
166
+ def testOptionWithChoicesArg
167
+ #$TRACE.set_level(9) do
168
+ usage = UsageMod::Base.new("(-m a|b|c)", "", ["-m", "a"]).parse_args
169
+ assert_equal("a", usage.dash_m)
170
+ #end
171
+ end
172
+
173
+ def testOptionWithBadChoice
174
+ assert_raises(UsageMod::InvalidChoiceError) do
175
+ usage = UsageMod::Base.new("(-m a|b|c)", "", ["-m", "d"]).parse_args
176
+ end
177
+ end
178
+
179
+
180
+ def testOptionsWithoutArg
181
+ assert_raises(UsageMod::MissingOptionArgumentError) do
182
+ usage = UsageMod::Base.new("(-m marg)", "", ["-m"]).parse_args
183
+ end
184
+ end
185
+
186
+ def testOptionNestingUnderflowError
187
+ assert_raises(UsageMod::NestingUnderflow) do
188
+ usage = UsageMod::Base.new("-m marg)", "", ["-m"]).parse_args
189
+ end
190
+ end
191
+
192
+ def testOptionNestingOverflowError
193
+ assert_raises(UsageMod::NestingOverflow) do
194
+ usage = UsageMod::Base.new("(-m marg", "", ["-m"]).parse_args
195
+ end
196
+ end
197
+
198
+ def testOptionalOptionMissing
199
+ #$TRACE.set_level 9 do
200
+ usage = UsageMod::Base.new("[-m]", "", []).parse_args
201
+ assert_equal(nil, usage.dash_m)
202
+ #end
203
+ end
204
+
205
+ def testOptionalOption
206
+ #$TRACE.set_level 9 do
207
+ usage = UsageMod::Base.new("[-m]", "", ["-m"]).parse_args
208
+ assert_equal(true, usage.dash_m)
209
+ #end
210
+ end
211
+
212
+ def testOptionalOptionWithMissingArg
213
+ assert_raises(UsageMod::MissingOptionArgumentError) do
214
+ #$TRACE.set_level 9 do
215
+ usage = UsageMod::Base.new("[-m filename]", "", ["-m"]).parse_args
216
+ #end
217
+ end
218
+ end
219
+
220
+ def testOptionalOptionWithArgButWholeOptionMissing
221
+ #$TRACE.set_level 9 do
222
+ usage = UsageMod::Base.new("[-m filename]", "", []).parse_args
223
+ assert_equal(nil, usage.dash_m)
224
+ #end
225
+ end
226
+
227
+ def testOptionalOptionAndRegularArgMissing
228
+ #$TRACE.set_level 9 do
229
+ assert_raises(UsageMod::TooFewArgError) do
230
+ usage = UsageMod::Base.new("[-m filename] logfile", "", []).parse_args
231
+ end
232
+ #end
233
+ end
234
+
235
+ def testOptionalOptionAndRegularArgWithArgOnly
236
+ usage = UsageMod::Base.new("[-m filename] logfile", "", ["log1.txt"]).parse_args
237
+ assert_equal("log1.txt", usage.logfile)
238
+ assert_equal(nil, usage.dash_m)
239
+ end
240
+
241
+ def testOptionalOptionAndRegularArgWithBoth
242
+ usage = UsageMod::Base.new("[-m filename] logfile", "", ["-m", "file1.txt", "log1.txt"]).parse_args
243
+ assert_equal("log1.txt", usage.logfile)
244
+ assert_equal(true, usage.dash_m)
245
+ assert_equal("file1.txt", usage.filename)
246
+ end
247
+
248
+ def testRequiredOptionOptionalOptionAndRegularArgWithAll
249
+ usage = UsageMod::Base.new("-t [-m filename] logfile", "", ["-t", "-m", "file1.txt", "log1.txt"]).parse_args
250
+ assert_equal("log1.txt", usage.logfile)
251
+ assert_equal(true, usage.dash_t)
252
+ assert_equal(true, usage.dash_m)
253
+ assert_equal("file1.txt", usage.filename)
254
+ end
255
+
256
+ def testRequiredOptionOptionalOptionAndRegularArgWithRequired
257
+ usage = UsageMod::Base.new("-t [-m filename] logfile", "", ["-t", "log1.txt"]).parse_args
258
+ assert_equal("log1.txt", usage.logfile)
259
+ assert_equal(true, usage.dash_t)
260
+ assert_equal(nil, usage.dash_m)
261
+ end
262
+
263
+ def testRequiredOptionWithTwoOptionalChoiceOptionsAndTwoRegularArgs
264
+ usage = UsageMod::Base.new("(-w width) [-i r|R|m] [-o r|R|m] infile outfile", "",
265
+ ["-w", "33", "-i", "R", "-o", "r", "infile.txt", "outfile.txt"]).parse_args
266
+ assert_equal("33", usage.width)
267
+ assert_equal("R", usage.dash_i)
268
+ assert_equal("r", usage.dash_o)
269
+ assert_equal("infile.txt", usage.infile)
270
+ assert_equal("outfile.txt", usage.outfile)
271
+ end
272
+
273
+ def testOptionalArgumentWithTypeNotPresent
274
+ #$TRACE.set_level 9 do
275
+ usage = UsageMod::Base.new("arg1 [%arg2]", "", ["arg1"]).parse_args
276
+ assert_equal("arg1", usage.arg1)
277
+ assert_equal(nil, usage.arg2)
278
+ #end
279
+ end
280
+
281
+ def testOptionalArgumentWithTypePresent
282
+ usage = UsageMod::Base.new("arg1 [%arg2]", "", ["arg1", "5"]).parse_args
283
+ assert_equal("arg1", usage.arg1)
284
+ assert_equal(5, usage.arg2)
285
+ end
286
+
287
+ def testOptionalArgumentNotPresent
288
+ #$TRACE.set_level 9 do
289
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arg1"]).parse_args
290
+ assert_equal("arg1", usage.arg1)
291
+ assert_equal(nil, usage.arg2)
292
+ #end
293
+ end
294
+
295
+ def testOptionalArgumentPresent
296
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arg1", "arg2"]).parse_args
297
+ assert_equal("arg1", usage.arg1)
298
+ assert_equal("arg2", usage.arg2)
299
+ end
300
+ end
301
+
302
+
303
+
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.3
3
+ specification_version: 1
4
+ name: Usage
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2005-09-20
8
+ summary: This module implements a simple no thought command line option parser
9
+ require_paths:
10
+ - lib
11
+ email:
12
+ homepage:
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: Usage
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ authors: []
28
+ files:
29
+ - "./LICENSE"
30
+ - "./README"
31
+ - "./TODO"
32
+ - lib/Usage.rb
33
+ - tests/TC_Usage.rb
34
+ - samples/Sample1.rb
35
+ - samples/Sample2.rb
36
+ - samples/Sample3.rb
37
+ - samples/Sample4.rb
38
+ - samples/Sample5.rb
39
+ - samples/Sample6.rb
40
+ - samples/Sample7.rb
41
+ - README
42
+ test_files:
43
+ - tests/TC_Usage.rb
44
+ rdoc_options: []
45
+ extra_rdoc_files:
46
+ - README
47
+ executables: []
48
+ extensions: []
49
+ requirements: []
50
+ dependencies:
51
+ - !ruby/object:Gem::Dependency
52
+ name: SimpleTrace
53
+ version_requirement:
54
+ version_requirements: !ruby/object:Gem::Version::Requirement
55
+ requirements:
56
+ -
57
+ - "<="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.1.0
60
+ version: