clasp-ruby 0.15.2 → 0.16.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/examples/flag_and_option_aliases.md +203 -0
- data/examples/flag_and_option_aliases.rb +74 -0
- data/examples/show_usage_and_version.md +141 -0
- data/examples/show_usage_and_version.rb +54 -0
- data/lib/clasp/arguments.rb +44 -0
- data/lib/clasp/cli.rb +7 -3
- data/lib/clasp/version.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d2393ba0de2e70168bc58f88cdf73b9d4f5e748
|
4
|
+
data.tar.gz: 60463d18965a903998197c5f0b1dd9cb4bb10836
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b3aa22592465766c7486b75b538b66436c27b67cc502c6d7eb29e2aa59eb9cf160ef0c043409ed4acbaeb406e6952e050152b2ff1dbbd729f735924fbea33ff
|
7
|
+
data.tar.gz: e6e14d4f75a31553b3a40394b0b4cbd1920f2cbf6ee630c43d9f2301dcfe4a96d85257f669ea76f9770f1f8e472357336cc53fe43788a44531f7447a1955e9b6
|
@@ -0,0 +1,203 @@
|
|
1
|
+
# CLASP.Ruby Example - **show_usage_and_version**
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
Example illustrating various kinds of *flag* and *option* aliases, including the combination of short-names.
|
6
|
+
|
7
|
+
## Source
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
#!/usr/bin/env ruby
|
11
|
+
|
12
|
+
# examples/flag_and_option_aliases.rb
|
13
|
+
|
14
|
+
# requires
|
15
|
+
|
16
|
+
require 'clasp'
|
17
|
+
|
18
|
+
# constants
|
19
|
+
|
20
|
+
ProgramVersion = [ 0, 0, 1 ]
|
21
|
+
|
22
|
+
InfoLines = [
|
23
|
+
|
24
|
+
'CLASP.Ruby examples',
|
25
|
+
:version,
|
26
|
+
"Illustrates use of CLASP.Ruby's use of flags, options, and aliases",
|
27
|
+
'',
|
28
|
+
]
|
29
|
+
|
30
|
+
# Specify aliases, parse, and checking standard flags
|
31
|
+
|
32
|
+
Flag_Debug = CLASP.Flag('--debug', alias: '-d', help: 'runs in Debug mode')
|
33
|
+
Option_Verbosity = CLASP.Option('--verbosity', alias: '-v', help: 'specifies the verbosity', values: [ 'terse', 'quiet', 'silent', 'chatty' ])
|
34
|
+
Flag_Chatty = CLASP.Flag('--verbosity=chatty', alias: '-c')
|
35
|
+
|
36
|
+
Aliases = [
|
37
|
+
|
38
|
+
Flag_Debug,
|
39
|
+
Option_Verbosity,
|
40
|
+
Flag_Chatty,
|
41
|
+
|
42
|
+
CLASP::FlagAlias.Help,
|
43
|
+
CLASP::FlagAlias.Version,
|
44
|
+
]
|
45
|
+
|
46
|
+
args = CLASP::Arguments.new ARGV, Aliases
|
47
|
+
|
48
|
+
if args.flags.include?(CLASP::FlagAlias.Help)
|
49
|
+
|
50
|
+
CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
|
51
|
+
end
|
52
|
+
|
53
|
+
if args.flags.include?('--version')
|
54
|
+
|
55
|
+
CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
# Program-specific processing of flags/options
|
60
|
+
|
61
|
+
if (opt = args.find_option('--verbosity'))
|
62
|
+
|
63
|
+
$stdout.puts "verbosity is specified as: #{opt.value}"
|
64
|
+
end
|
65
|
+
|
66
|
+
if args.flags.include?('--debug')
|
67
|
+
|
68
|
+
$stdout.puts 'Debug mode is specified'
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
# Check for any unrecognised flags or options
|
74
|
+
|
75
|
+
if (unused = args.find_first_unknown())
|
76
|
+
|
77
|
+
$stderr.puts "#{args.program_name}: unrecognised flag/option: #{unused}"
|
78
|
+
|
79
|
+
sys.exit(1)
|
80
|
+
end
|
81
|
+
```
|
82
|
+
|
83
|
+
## Usage
|
84
|
+
|
85
|
+
### No arguments
|
86
|
+
|
87
|
+
If executed with no arguments
|
88
|
+
|
89
|
+
```
|
90
|
+
ruby examples/flag_and_option_aliases.rb
|
91
|
+
```
|
92
|
+
|
93
|
+
or (in a Unix shell):
|
94
|
+
|
95
|
+
```
|
96
|
+
./examples/flag_and_option_aliases.rb
|
97
|
+
```
|
98
|
+
|
99
|
+
it gives the output:
|
100
|
+
|
101
|
+
```
|
102
|
+
```
|
103
|
+
|
104
|
+
### Show usage
|
105
|
+
|
106
|
+
If executed with the arguments
|
107
|
+
|
108
|
+
```
|
109
|
+
ruby examples/flag_and_option_aliases.rb --help
|
110
|
+
```
|
111
|
+
|
112
|
+
it gives the output:
|
113
|
+
|
114
|
+
```
|
115
|
+
CLASP.Ruby examples
|
116
|
+
flag_and_option_aliases.rb 0.0.1
|
117
|
+
Illustrates use of CLASP.Ruby's use of flags, options, and aliases
|
118
|
+
|
119
|
+
USAGE: flag_and_option_aliases.rb [ ... flags and options ... ]
|
120
|
+
|
121
|
+
flags/options:
|
122
|
+
|
123
|
+
-d
|
124
|
+
--debug
|
125
|
+
runs in Debug mode
|
126
|
+
|
127
|
+
-c --verbosity=chatty
|
128
|
+
-v <value>
|
129
|
+
--verbosity=<value>
|
130
|
+
specifies the verbosity
|
131
|
+
where <value> one of:
|
132
|
+
terse
|
133
|
+
quiet
|
134
|
+
silent
|
135
|
+
chatty
|
136
|
+
|
137
|
+
--help
|
138
|
+
shows this help and terminates
|
139
|
+
|
140
|
+
--version
|
141
|
+
shows version and terminates
|
142
|
+
```
|
143
|
+
|
144
|
+
### Specify flags and options in long-form
|
145
|
+
|
146
|
+
If executed with the arguments
|
147
|
+
|
148
|
+
```
|
149
|
+
ruby examples/flag_and_option_aliases.rb --debug --verbosity=silent
|
150
|
+
```
|
151
|
+
|
152
|
+
it gives the output:
|
153
|
+
|
154
|
+
```
|
155
|
+
verbosity is specified as: silent
|
156
|
+
Debug mode is specified
|
157
|
+
```
|
158
|
+
|
159
|
+
### Specify flags and options in short-form
|
160
|
+
|
161
|
+
If executed with the arguments
|
162
|
+
|
163
|
+
```
|
164
|
+
ruby examples/flag_and_option_aliases.rb -v silent -d
|
165
|
+
```
|
166
|
+
|
167
|
+
it gives the (same) output:
|
168
|
+
|
169
|
+
```
|
170
|
+
verbosity is specified as: silent
|
171
|
+
Debug mode is specified
|
172
|
+
```
|
173
|
+
|
174
|
+
### Specify flags and options in short-form, including an alias for an option-with-value
|
175
|
+
|
176
|
+
If executed with the arguments
|
177
|
+
|
178
|
+
```
|
179
|
+
ruby examples/flag_and_option_aliases.rb -c -d
|
180
|
+
```
|
181
|
+
|
182
|
+
it gives the output:
|
183
|
+
|
184
|
+
```
|
185
|
+
verbosity is specified as: chatty
|
186
|
+
Debug mode is specified
|
187
|
+
```
|
188
|
+
|
189
|
+
### Specify flags and options with combined short-form
|
190
|
+
|
191
|
+
If executed with the arguments
|
192
|
+
|
193
|
+
```
|
194
|
+
ruby examples/flag_and_option_aliases.rb -dc
|
195
|
+
```
|
196
|
+
|
197
|
+
it gives the (same) output:
|
198
|
+
|
199
|
+
```
|
200
|
+
verbosity is specified as: chatty
|
201
|
+
Debug mode is specified
|
202
|
+
```
|
203
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# examples/flag_and_option_aliases.rb
|
4
|
+
|
5
|
+
# requires
|
6
|
+
|
7
|
+
require 'clasp'
|
8
|
+
|
9
|
+
# constants
|
10
|
+
|
11
|
+
ProgramVersion = [ 0, 0, 1 ]
|
12
|
+
|
13
|
+
InfoLines = [
|
14
|
+
|
15
|
+
'CLASP.Ruby examples',
|
16
|
+
:version,
|
17
|
+
"Illustrates use of CLASP.Ruby's use of flags, options, and aliases",
|
18
|
+
'',
|
19
|
+
]
|
20
|
+
|
21
|
+
# Specify aliases, parse, and checking standard flags
|
22
|
+
|
23
|
+
Flag_Debug = CLASP.Flag('--debug', alias: '-d', help: 'runs in Debug mode')
|
24
|
+
Option_Verbosity = CLASP.Option('--verbosity', alias: '-v', help: 'specifies the verbosity', values: [ 'terse', 'quiet', 'silent', 'chatty' ])
|
25
|
+
Flag_Chatty = CLASP.Flag('--verbosity=chatty', alias: '-c')
|
26
|
+
|
27
|
+
Aliases = [
|
28
|
+
|
29
|
+
Flag_Debug,
|
30
|
+
Option_Verbosity,
|
31
|
+
Flag_Chatty,
|
32
|
+
|
33
|
+
CLASP::FlagAlias.Help,
|
34
|
+
CLASP::FlagAlias.Version,
|
35
|
+
]
|
36
|
+
|
37
|
+
args = CLASP::Arguments.new ARGV, Aliases
|
38
|
+
|
39
|
+
if args.flags.include?(CLASP::FlagAlias.Help)
|
40
|
+
|
41
|
+
CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
|
42
|
+
end
|
43
|
+
|
44
|
+
if args.flags.include?('--version')
|
45
|
+
|
46
|
+
CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
# Program-specific processing of flags/options
|
51
|
+
|
52
|
+
if (opt = args.find_option('--verbosity'))
|
53
|
+
|
54
|
+
$stdout.puts "verbosity is specified as: #{opt.value}"
|
55
|
+
end
|
56
|
+
|
57
|
+
if args.flags.include?('--debug')
|
58
|
+
|
59
|
+
$stdout.puts 'Debug mode is specified'
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
# Check for any unrecognised flags or options
|
65
|
+
|
66
|
+
if (unused = args.find_first_unknown())
|
67
|
+
|
68
|
+
$stderr.puts "#{args.program_name}: unrecognised flag/option: #{unused}"
|
69
|
+
|
70
|
+
exit 1
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# CLASP.Ruby Example - **show_usage_and_version**
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
Simple example supporting ```--help``` and ```--version```.
|
6
|
+
|
7
|
+
## Source
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
#!/usr/bin/env ruby
|
11
|
+
|
12
|
+
# examples/show_usage_and_version.rb
|
13
|
+
|
14
|
+
# requires
|
15
|
+
|
16
|
+
require 'clasp'
|
17
|
+
|
18
|
+
# constants
|
19
|
+
|
20
|
+
ProgramVersion = [ 0, 0, 1 ]
|
21
|
+
|
22
|
+
InfoLines = [
|
23
|
+
|
24
|
+
'CLASP.Ruby examples',
|
25
|
+
:version,
|
26
|
+
"Illustrates use of CLASP.Ruby's CLASP.show_usage() and CLASP.show_version() methods",
|
27
|
+
'',
|
28
|
+
]
|
29
|
+
|
30
|
+
# Specify aliases, parse, and checking standard flags
|
31
|
+
|
32
|
+
Aliases = [
|
33
|
+
|
34
|
+
CLASP::FlagAlias.Help,
|
35
|
+
CLASP::FlagAlias.Version,
|
36
|
+
]
|
37
|
+
|
38
|
+
args = CLASP::Arguments.new ARGV, Aliases
|
39
|
+
|
40
|
+
if args.flags.include?('--help')
|
41
|
+
|
42
|
+
CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
|
43
|
+
end
|
44
|
+
|
45
|
+
if args.flags.include?('--version')
|
46
|
+
|
47
|
+
CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
# Check for any unrecognised flags or options
|
52
|
+
|
53
|
+
if (unused = args.find_first_unknown())
|
54
|
+
|
55
|
+
$stderr.puts "#{args.program_name}: unrecognised flag/option: #{unused}"
|
56
|
+
|
57
|
+
sys.exit(1)
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
$stdout.puts 'no flags specified'
|
62
|
+
```
|
63
|
+
|
64
|
+
## Usage
|
65
|
+
|
66
|
+
### No arguments
|
67
|
+
|
68
|
+
If executed with no arguments
|
69
|
+
|
70
|
+
```
|
71
|
+
ruby examples/show_usage_and_version.rb
|
72
|
+
```
|
73
|
+
|
74
|
+
or (in a Unix shell):
|
75
|
+
|
76
|
+
```
|
77
|
+
./examples/show_usage_and_version.rb
|
78
|
+
```
|
79
|
+
|
80
|
+
it gives the output:
|
81
|
+
|
82
|
+
```
|
83
|
+
no flags specified
|
84
|
+
```
|
85
|
+
|
86
|
+
### Show usage
|
87
|
+
|
88
|
+
If executed with the arguments
|
89
|
+
|
90
|
+
```
|
91
|
+
ruby examples/show_usage_and_version.rb --help
|
92
|
+
```
|
93
|
+
|
94
|
+
it gives the output:
|
95
|
+
|
96
|
+
```
|
97
|
+
CLASP.Ruby examples
|
98
|
+
show_usage_and_version.rb 0.0.1
|
99
|
+
Illustrates use of CLASP.Ruby's show_usage() and show_version() methods
|
100
|
+
|
101
|
+
USAGE: show_usage_and_version.rb [ ... flags and options ... ]
|
102
|
+
|
103
|
+
flags/options:
|
104
|
+
|
105
|
+
--help
|
106
|
+
Shows usage and terminates
|
107
|
+
|
108
|
+
--version
|
109
|
+
Shows version and terminates
|
110
|
+
```
|
111
|
+
|
112
|
+
### Show version
|
113
|
+
|
114
|
+
If executed with the arguments
|
115
|
+
|
116
|
+
```
|
117
|
+
ruby examples/show_usage_and_version.rb --version
|
118
|
+
```
|
119
|
+
|
120
|
+
it gives the output:
|
121
|
+
|
122
|
+
```
|
123
|
+
show_usage_and_version.rb 0.0.1
|
124
|
+
```
|
125
|
+
|
126
|
+
### Unknown option
|
127
|
+
|
128
|
+
If executed with the arguments
|
129
|
+
|
130
|
+
```
|
131
|
+
ruby examples/show_usage_and_version.rb --unknown=value
|
132
|
+
```
|
133
|
+
|
134
|
+
it gives the output (on the standard error stream):
|
135
|
+
|
136
|
+
```
|
137
|
+
show_usage_and_version.rb: unrecognised flag/option: --unknown=value
|
138
|
+
```
|
139
|
+
|
140
|
+
with an exit code of 1
|
141
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# examples/show_usage_and_version.rb
|
4
|
+
|
5
|
+
# requires
|
6
|
+
|
7
|
+
require 'clasp'
|
8
|
+
|
9
|
+
# constants
|
10
|
+
|
11
|
+
ProgramVersion = [ 0, 0, 1 ]
|
12
|
+
|
13
|
+
InfoLines = [
|
14
|
+
|
15
|
+
'CLASP.Ruby examples',
|
16
|
+
:version,
|
17
|
+
"Illustrates use of CLASP.Ruby's CLASP.show_usage() and CLASP.show_version() methods",
|
18
|
+
'',
|
19
|
+
]
|
20
|
+
|
21
|
+
# Specify aliases, parse, and checking standard flags
|
22
|
+
|
23
|
+
Aliases = [
|
24
|
+
|
25
|
+
CLASP::FlagAlias.Help,
|
26
|
+
CLASP::FlagAlias.Version,
|
27
|
+
]
|
28
|
+
|
29
|
+
args = CLASP::Arguments.new ARGV, Aliases
|
30
|
+
|
31
|
+
if args.flags.include?('--help')
|
32
|
+
|
33
|
+
CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
|
34
|
+
end
|
35
|
+
|
36
|
+
if args.flags.include?('--version')
|
37
|
+
|
38
|
+
CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# Check for any unrecognised flags or options
|
43
|
+
|
44
|
+
if (unused = args.find_first_unknown())
|
45
|
+
|
46
|
+
$stderr.puts "#{args.program_name}: unrecognised flag/option: #{unused}"
|
47
|
+
|
48
|
+
exit 1
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
$stdout.puts 'no flags specified'
|
53
|
+
|
54
|
+
|
data/lib/clasp/arguments.rb
CHANGED
@@ -205,6 +205,7 @@ class Arguments
|
|
205
205
|
|
206
206
|
init_opts[:mutate_argv] = true unless init_opts.has_key? :mutate_argv
|
207
207
|
|
208
|
+
@program_name = init_opts[:program_name] || Arguments.derive_program_name_
|
208
209
|
|
209
210
|
@argv = argv
|
210
211
|
argv = argv.dup
|
@@ -268,6 +269,11 @@ class Arguments
|
|
268
269
|
end
|
269
270
|
|
270
271
|
private
|
272
|
+
def self.derive_program_name_
|
273
|
+
|
274
|
+
$0
|
275
|
+
end
|
276
|
+
|
271
277
|
def self.parse(argv, aliases)
|
272
278
|
|
273
279
|
flags = []
|
@@ -427,6 +433,8 @@ class Arguments
|
|
427
433
|
# unchanged copy of the original array of arguments passed to new
|
428
434
|
attr_reader :argv_original_copy
|
429
435
|
|
436
|
+
attr_reader :program_name
|
437
|
+
|
430
438
|
|
431
439
|
# finds the first unknown flag or option; +nil+ if all used
|
432
440
|
def find_first_unknown options = {}
|
@@ -452,6 +460,42 @@ class Arguments
|
|
452
460
|
nil
|
453
461
|
end
|
454
462
|
|
463
|
+
# Searches for a flag that matches the given id, returning the flag if
|
464
|
+
# found; +nil+ otherwise
|
465
|
+
#
|
466
|
+
# === Signature
|
467
|
+
#
|
468
|
+
# * *Parameters*:
|
469
|
+
# - +id+:: (String, CLASP::Flag) The name of a flag, or the flag
|
470
|
+
# itself
|
471
|
+
def find_flag(id)
|
472
|
+
|
473
|
+
flags.each do |flag|
|
474
|
+
|
475
|
+
return flag if flag == id
|
476
|
+
end
|
477
|
+
|
478
|
+
nil
|
479
|
+
end
|
480
|
+
|
481
|
+
# Searches for a option that matches the given id, returning the option
|
482
|
+
# if found; +nil+ otherwise
|
483
|
+
#
|
484
|
+
# === Signature
|
485
|
+
#
|
486
|
+
# * *Parameters*:
|
487
|
+
# - +id+:: (String, CLASP::Flag) The name of a option, or the option
|
488
|
+
# itself
|
489
|
+
def find_option(id)
|
490
|
+
|
491
|
+
options.each do |option|
|
492
|
+
|
493
|
+
return option if option == id
|
494
|
+
end
|
495
|
+
|
496
|
+
nil
|
497
|
+
end
|
498
|
+
|
455
499
|
# #################################################################### #
|
456
500
|
# backwards-compatible
|
457
501
|
|
data/lib/clasp/cli.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Purpose: Command-line interface
|
6
6
|
#
|
7
7
|
# Created: 27th July 2015
|
8
|
-
# Updated:
|
8
|
+
# Updated: 19th March 2019
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/CLASP.Ruby
|
11
11
|
#
|
@@ -244,7 +244,9 @@ def self.show_usage aliases, options={}
|
|
244
244
|
end
|
245
245
|
end
|
246
246
|
|
247
|
-
|
247
|
+
exit_code = options[:exit_code] || options[:exit]
|
248
|
+
|
249
|
+
exit exit_code if exit_code
|
248
250
|
end
|
249
251
|
|
250
252
|
# Displays version for the program according to the given aliases and options
|
@@ -281,7 +283,9 @@ def self.show_version aliases, options = {}
|
|
281
283
|
|
282
284
|
stream.puts version_string
|
283
285
|
|
284
|
-
|
286
|
+
exit_code = options[:exit_code] || options[:exit]
|
287
|
+
|
288
|
+
exit exit_code if exit_code
|
285
289
|
end
|
286
290
|
|
287
291
|
# ######################################################################## #
|
data/lib/clasp/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clasp-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
@@ -35,6 +35,10 @@ files:
|
|
35
35
|
- LICENSE
|
36
36
|
- README.md
|
37
37
|
- examples/cr-example.rb
|
38
|
+
- examples/flag_and_option_aliases.md
|
39
|
+
- examples/flag_and_option_aliases.rb
|
40
|
+
- examples/show_usage_and_version.md
|
41
|
+
- examples/show_usage_and_version.rb
|
38
42
|
- lib/clasp-ruby.rb
|
39
43
|
- lib/clasp.rb
|
40
44
|
- lib/clasp/aliases.rb
|