shellopts 2.3.1 → 2.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/shellopts/argument_type.rb +12 -10
- data/lib/shellopts/program.rb +2 -0
- data/lib/shellopts/version.rb +1 -1
- data/lib/shellopts.rb +36 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53f85a46df1cf2280e591fbf996781c73e3ddb3dfe88ede023f6ef29f26995a4
|
4
|
+
data.tar.gz: 0ffb37c5f3843e92676004994600687dec0db89afccd20dea984998692e160a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e67de152c69ae86557ec6898e7b0402d4188b8ca57a53128cfd7b3521655e80aadbc6114bcf943101f1a4012216604703dba54ae2a6921019d228b0b343b1837
|
7
|
+
data.tar.gz: bfe12de981b2504514cd42c81f64511d01fe7948d1d8a563b2f34473d30fa8cd7e5cc22f550e9e81bd3a31ff3da863adbc60dd33ffd9fed53ea69d0bc8907a62
|
@@ -60,6 +60,17 @@ module ShellOpts
|
|
60
60
|
class FileArgument < ArgumentType
|
61
61
|
attr_reader :kind
|
62
62
|
|
63
|
+
def subject # Used in error messages
|
64
|
+
@subject ||=
|
65
|
+
case kind
|
66
|
+
when :file, :efile, :nfile, :ifile, :ofile; "file"
|
67
|
+
when :dir, :edir, :ndir; "directory"
|
68
|
+
when :path, :epath, :npath; "path"
|
69
|
+
else
|
70
|
+
raise ArgumentError
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
63
74
|
def initialize(kind)
|
64
75
|
constrain kind, :file, :dir, :path, :efile, :edir, :epath, :nfile, :ndir, :npath, :ifile, :ofile
|
65
76
|
@kind = kind
|
@@ -128,15 +139,6 @@ module ShellOpts
|
|
128
139
|
|
129
140
|
protected
|
130
141
|
def match_path(name, literal, kind, method, mode)
|
131
|
-
subject =
|
132
|
-
case kind
|
133
|
-
when :file, :efile, :nfile, :ifile, :ofile; "file"
|
134
|
-
when :dir, :edir, :ndir; "directory"
|
135
|
-
when :path, :epath, :npath; "path"
|
136
|
-
else
|
137
|
-
raise ArgumentError
|
138
|
-
end
|
139
|
-
|
140
142
|
# file exists and is the rigth type?
|
141
143
|
if File.send(method, literal)
|
142
144
|
if mode == :new
|
@@ -174,7 +176,7 @@ module ShellOpts
|
|
174
176
|
set_message "Illegal path in #{name}: #{literal}"
|
175
177
|
end
|
176
178
|
else
|
177
|
-
set_message "Can't find #{literal}"
|
179
|
+
set_message "Can't find #{subject} #{literal}"
|
178
180
|
end
|
179
181
|
end
|
180
182
|
end
|
data/lib/shellopts/program.rb
CHANGED
@@ -315,12 +315,14 @@ module ShellOpts
|
|
315
315
|
class Program < Command
|
316
316
|
# Accessors for standard options values that are not affected if the option
|
317
317
|
# is renamed
|
318
|
+
attr_accessor :__silent__
|
318
319
|
attr_accessor :__quiet__
|
319
320
|
attr_accessor :__verbose__
|
320
321
|
attr_accessor :__debug__
|
321
322
|
|
322
323
|
def initialize
|
323
324
|
super
|
325
|
+
@__silent__ = false
|
324
326
|
@__quiet__ = false
|
325
327
|
@__verbose__ = 0
|
326
328
|
@__debug__ = false
|
data/lib/shellopts/version.rb
CHANGED
data/lib/shellopts.rb
CHANGED
@@ -110,6 +110,9 @@ module ShellOpts
|
|
110
110
|
# Version of client program. If not nil, a --version option is added to the program
|
111
111
|
attr_reader :version
|
112
112
|
|
113
|
+
# Automatically add a -s and a --silent option if true
|
114
|
+
attr_reader :silent
|
115
|
+
|
113
116
|
# Automatically add a -q and a --quiet option if true
|
114
117
|
attr_reader :quiet
|
115
118
|
|
@@ -140,6 +143,7 @@ module ShellOpts
|
|
140
143
|
# Options
|
141
144
|
help: true,
|
142
145
|
version: true,
|
146
|
+
silent: nil,
|
143
147
|
quiet: nil,
|
144
148
|
verbose: nil,
|
145
149
|
debug: nil,
|
@@ -157,6 +161,7 @@ module ShellOpts
|
|
157
161
|
@name = name || File.basename($PROGRAM_NAME)
|
158
162
|
@help = help
|
159
163
|
@version = version || (version.nil? && !version_number.nil?)
|
164
|
+
@silent = silent
|
160
165
|
@quiet = quiet
|
161
166
|
@verbose = verbose
|
162
167
|
@debug = debug
|
@@ -177,10 +182,13 @@ module ShellOpts
|
|
177
182
|
|
178
183
|
help_spec = (@help == true ? "-h,help" : @help)
|
179
184
|
version_spec = (@version == true ? "--version" : @version)
|
185
|
+
silent_spec = (@silent == true ? "-q,silent" : @silent)
|
180
186
|
quiet_spec = (@quiet == true ? "-q,quiet" : @quiet)
|
181
187
|
verbose_spec = (@verbose == true ? "+v,verbose" : @verbose)
|
182
188
|
debug_spec = (@debug == true ? "--debug" : @debug)
|
183
189
|
|
190
|
+
@silent_option =
|
191
|
+
ast.inject_option(silent_spec, "Quiet", "Do not write anything to standard output") if @silent
|
184
192
|
@quiet_option =
|
185
193
|
ast.inject_option(quiet_spec, "Quiet", "Do not write anything to standard output") if @quiet
|
186
194
|
@verbose_option =
|
@@ -224,6 +232,8 @@ module ShellOpts
|
|
224
232
|
puts version_number
|
225
233
|
exit
|
226
234
|
else
|
235
|
+
# Assign standard options. The targets doesn't change if the option is renamed
|
236
|
+
@program.__silent__ = @program.__send__(:"#{@silent_option.ident}?") if @silent
|
227
237
|
@program.__quiet__ = @program.__send__(:"#{@quiet_option.ident}?") if @quiet
|
228
238
|
@program.__verbose__ = @program.__send__(:"#{@verbose_option.ident}") if @verbose
|
229
239
|
@program.__debug__ = @program.__send__(:"#{@debug_option.ident}?") if @debug
|
@@ -393,19 +403,35 @@ module ShellOpts
|
|
393
403
|
end
|
394
404
|
end
|
395
405
|
|
396
|
-
def self.process(spec, argv, quiet: nil, verbose: nil, debug: nil, **opts)
|
406
|
+
def self.process(spec, argv, silent: nil, quiet: nil, verbose: nil, debug: nil, **opts)
|
407
|
+
constrain silent, String, true, false, nil
|
397
408
|
constrain quiet, String, true, false, nil
|
409
|
+
silent = silent.nil? ? Message.is_included? || Verbose.is_included? : silent
|
398
410
|
quiet = quiet.nil? ? Message.is_included? || Verbose.is_included? : quiet
|
399
411
|
verbose = verbose.nil? ? ::ShellOpts::Verbose.is_included? : verbose
|
400
412
|
debug = debug.nil? ? Debug.is_included? : debug
|
401
|
-
ShellOpts.process(spec, argv, quiet: quiet, verbose: verbose, debug: debug, **opts)
|
413
|
+
ShellOpts.process(spec, argv, silent: silent, quiet: quiet, verbose: verbose, debug: debug, **opts)
|
402
414
|
end
|
403
415
|
|
416
|
+
# The instance is a ShellOpts object. 'instance.program' and 'instance.argv'
|
417
|
+
# is the same as the values returned from ShellOpts.process
|
404
418
|
@instance = nil
|
405
419
|
def self.instance?() !@instance.nil? end
|
406
420
|
def self.instance() @instance or raise Error, "ShellOpts is not initialized" end
|
407
421
|
def self.instance=(instance) @instance = instance end
|
408
|
-
def self.shellopts() instance end
|
422
|
+
def self.shellopts() instance end # TODO: Yt
|
423
|
+
|
424
|
+
# Returns the corresponding option status on the program object. Note that
|
425
|
+
# the "bare" ShellOpts standard option methods (eg. ShellOpts.silent)
|
426
|
+
# determines if an option can be used while the query methods (eg.
|
427
|
+
# ShellOpts.silent?) reports if the option was present on the command line
|
428
|
+
#
|
429
|
+
# The methods below are implemented using the name-independent members of
|
430
|
+
# Program: __silent__ etc.
|
431
|
+
def self.silent?() instance.program.__silent__ end
|
432
|
+
def self.quiet?() silent? || instance.program.__quiet__ end
|
433
|
+
def self.verbose?(level = 1) level <= instance.program.__verbose__ end
|
434
|
+
def self.debug?() instance.program.__debug__ end
|
409
435
|
|
410
436
|
def self.error(subject = nil, message)
|
411
437
|
instance.error(subject, message) if instance? # Never returns
|
@@ -419,30 +445,29 @@ module ShellOpts
|
|
419
445
|
exit 1
|
420
446
|
end
|
421
447
|
|
448
|
+
# Emit a message on standard error. The --silent option suppresses these messages
|
422
449
|
def self.notice(message, newline: true)
|
423
450
|
method = newline ? :puts : :print
|
424
|
-
$stderr.send(method, message) if !
|
451
|
+
$stderr.send(method, message) if !silent?
|
425
452
|
end
|
426
453
|
|
454
|
+
# Emit a message on standard output. The --quiet option suppresses these messages
|
427
455
|
def self.mesg(message, newline: true)
|
428
456
|
method = newline ? :puts : :print
|
429
|
-
$stdout.send(method,
|
457
|
+
$stdout.send(method, message) if !quiet?
|
430
458
|
end
|
431
459
|
|
460
|
+
# Emit a message on standard output. The --verbose option controls these messages
|
432
461
|
def self.verb(level = 1, message, newline: true)
|
433
462
|
method = newline ? :puts : :print
|
434
|
-
$stdout.send(method,
|
463
|
+
$stdout.send(method, message) if verbose?(level)
|
435
464
|
end
|
436
465
|
|
437
466
|
def self.debug(message, newline: true)
|
438
467
|
method = newline ? :puts : :print
|
439
|
-
$stdout.send(method,
|
468
|
+
$stdout.send(method, message) if debug?
|
440
469
|
end
|
441
470
|
|
442
|
-
def self.quiet?() instance.program.quiet? end
|
443
|
-
def self.verbose?(level = 1) level <= instance.program.verbose end
|
444
|
-
def self.debug?() instance.program.debug? end
|
445
|
-
|
446
471
|
module Message
|
447
472
|
@is_included = false
|
448
473
|
def self.is_included?() @is_included end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shellopts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: forward_to
|