Module: ShellOpts
- Defined in:
- lib/shellopts.rb,
lib/shellopts/ansi.rb,
lib/shellopts/args.rb,
lib/shellopts/dump.rb,
lib/shellopts/lexer.rb,
lib/shellopts/stack.rb,
lib/shellopts/token.rb,
lib/shellopts/option.rb,
lib/shellopts/parser.rb,
lib/shellopts/grammar.rb,
lib/shellopts/program.rb,
lib/shellopts/version.rb,
lib/shellopts/analyzer.rb,
lib/shellopts/renderer.rb,
lib/shellopts/formatter.rb,
lib/shellopts/interpreter.rb,
lib/shellopts/argument_type.rb
Overview
Option rendering
-a, --all # Only used in brief and doc formats (enum)
--all # Only used in usage (long)
-a # Only used in usage (short)
Option group rendering
-a, --all -b, --beta # Only used in brief formats (enum)
--all --beta # Used in usage (long)
-a -b # Used in usage (short)
-a, --all # Only used in doc format (:multi)
-b, --beta
Command rendering
cmd --all --beta [cmd1|cmd2] ARG1 ARG2 # Single-line formats (:single)
cmd --all --beta [cmd1|cmd2] ARGS... # Not used
cmd -a -b [cmd1|cmd2] ARG1 ARG2
cmd -a -b [cmd1|cmd2] ARGS... # Not used
cmd -a -b [cmd1|cmd2] ARG1 ARG2 # One line for each argument description (:enum)
cmd -a -b [cmd1|cmd2] ARG3 ARG4 # (used in the USAGE section)
cmd --all --beta # Multi-line formats (:multi)
[cmd1|cmd2] ARG1 ARG2
cmd --all --beta
<commands> ARGS
Defined Under Namespace
Modules: Debug, ErrorHandling, Grammar, Message, Stack, Verbose
Classes: Analyzer, AnalyzerError, Ansi, Args, Command, CompilerError, Error, Failure, Formatter, InternalError, Interpreter, Lexer, LexerError, Line, Option, Parser, ParserError, Program, ShellOpts, ShellOptsError, Token
Constant Summary
collapse
- VERSION =
"2.9.1"
- @@PROGRAM_PATH =
The full path to the program. This is initialized when shellopts.rb is loaded so it is not affected by later changes of directory
File.absolute_path($PROGRAM_NAME)
- @@ENVIRONMENT_PATH =
The full path to the user’s current directory when the program was called
File.absolute_path(Dir.getwd)
Class Method Summary
collapse
-
.debug(message, newline: true) ⇒ Object
-
.debug? ⇒ Boolean
-
.environment_path ⇒ Object
-
.error(message, exit: 1) ⇒ Object
-
.exception ⇒ Object
-
.exception=(value) ⇒ Object
-
.failure(message, exit: 1) ⇒ Object
-
.handle_exit(value) ⇒ Object
Exit program with the given status if an integer and status 1 if not.
-
.instance ⇒ Object
-
.instance=(instance) ⇒ Object
-
.instance? ⇒ Boolean
-
.mesg(message, newline: true) ⇒ Object
Emit a message on standard output.
-
.notice(message, newline: true) ⇒ Object
Emit a message on standard error.
-
.process(spec, argv, silent: nil, quiet: nil, verbose: nil, debug: nil, **opts) ⇒ Object
-
.program_path ⇒ Object
-
.quiet? ⇒ Boolean
-
.shellopts ⇒ Object
-
.silent? ⇒ Boolean
Returns the corresponding option status on the program object.
-
.verb(level = 1, message, newline: true) ⇒ Object
Emit a message on standard output.
-
.verbose?(level = 1) ⇒ Boolean
Class Method Details
.debug(message, newline: true) ⇒ Object
495
496
497
498
499
500
501
|
# File 'lib/shellopts.rb', line 495
def self.debug(message, newline: true)
method = newline ? :puts : :print
if debug?
$stdout.send(method, message)
$stdout.flush
end
end
|
.debug? ⇒ Boolean
446
|
# File 'lib/shellopts.rb', line 446
def self.debug?() instance.program.__debug__ end
|
.environment_path ⇒ Object
410
|
# File 'lib/shellopts.rb', line 410
def self.environment_path = @@ENVIRONMENT_PATH
|
.error(message, exit: 1) ⇒ Object
448
449
450
451
452
453
454
455
456
|
# File 'lib/shellopts.rb', line 448
def self.error(message, exit: 1)
raise Error.new(message) if exception
if instance?
instance.error(message, exit: exit)
else
$stderr.puts "#{File.basename($PROGRAM_NAME)}: #{message}"
handle_exit(exit)
end
end
|
.exception ⇒ Object
425
|
# File 'lib/shellopts.rb', line 425
def self.exception = @exception
|
.exception=(value) ⇒ Object
426
|
# File 'lib/shellopts.rb', line 426
def self.exception=(value) @exception = value end
|
.failure(message, exit: 1) ⇒ Object
458
459
460
461
462
463
464
465
466
|
# File 'lib/shellopts.rb', line 458
def self.failure(message, exit: 1)
raise Error.new(message) if exception
if instance?
instance.failure(message, exit: exit)
else
$stderr.puts "#{File.basename($PROGRAM_NAME)}: #{message}"
handle_exit(exit)
end
end
|
.handle_exit(value) ⇒ Object
Exit program with the given status if an integer and status 1 if not. Do not exit if status is falsy
506
507
508
|
# File 'lib/shellopts.rb', line 506
def self.handle_exit(value)
exit(value.is_a?(Integer) ? value : 1) if value
end
|
.instance ⇒ Object
432
|
# File 'lib/shellopts.rb', line 432
def self.instance() @instance or raise Error, "ShellOpts is not initialized" end
|
.instance=(instance) ⇒ Object
433
|
# File 'lib/shellopts.rb', line 433
def self.instance=(instance) @instance = instance end
|
.instance? ⇒ Boolean
431
|
# File 'lib/shellopts.rb', line 431
def self.instance?() !@instance.nil? end
|
.mesg(message, newline: true) ⇒ Object
Emit a message on standard output. The –quiet option suppresses these messages
478
479
480
481
482
483
484
|
# File 'lib/shellopts.rb', line 478
def self.mesg(message, newline: true)
method = newline ? :puts : :print
if !quiet?
$stdout.send(method, message)
$stdout.flush
end
end
|
.notice(message, newline: true) ⇒ Object
Emit a message on standard error. The –silent option suppresses these messages
469
470
471
472
473
474
475
|
# File 'lib/shellopts.rb', line 469
def self.notice(message, newline: true)
method = newline ? :puts : :print
if !silent?
$stderr.send(method, message)
$stderr.flush
end
end
|
.process(spec, argv, silent: nil, quiet: nil, verbose: nil, debug: nil, **opts) ⇒ Object
412
413
414
415
416
417
418
419
420
|
# File 'lib/shellopts.rb', line 412
def self.process(spec, argv, silent: nil, quiet: nil, verbose: nil, debug: nil, **opts)
constrain silent, String, true, false, nil
constrain quiet, String, true, false, nil
silent = silent.nil? ? Message.is_included? || Verbose.is_included? : silent
quiet = quiet.nil? ? Message.is_included? || Verbose.is_included? : quiet
verbose = verbose.nil? ? ::ShellOpts::Verbose.is_included? : verbose
debug = debug.nil? ? Debug.is_included? : debug
ShellOpts.process(spec, argv, silent: silent, quiet: quiet, verbose: verbose, debug: debug, **opts)
end
|
.program_path ⇒ Object
406
|
# File 'lib/shellopts.rb', line 406
def self.program_path = @@PROGRAM_PATH
|
.quiet? ⇒ Boolean
444
|
# File 'lib/shellopts.rb', line 444
def self.quiet?() silent? || instance.program.__quiet__ end
|
.shellopts ⇒ Object
434
|
# File 'lib/shellopts.rb', line 434
def self.shellopts() instance end
|
.silent? ⇒ Boolean
Returns the corresponding option status on the program object. Note that the “bare” ShellOpts standard option methods (eg. ShellOpts.silent) determines if an option can be used while the query methods (eg. ShellOpts.silent?) reports if the option was present on the command line
The methods below are implemented using the name-independent members of Program: __silent__ etc.
443
|
# File 'lib/shellopts.rb', line 443
def self.silent?() instance.program.__silent__ end
|
.verb(level = 1, message, newline: true) ⇒ Object
Emit a message on standard output. The –verbose option controls these messages
487
488
489
490
491
492
493
|
# File 'lib/shellopts.rb', line 487
def self.verb(level = 1, message, newline: true)
method = newline ? :puts : :print
if verbose?(level)
$stdout.send(method, message)
$stdout.flush
end
end
|
.verbose?(level = 1) ⇒ Boolean
445
|
# File 'lib/shellopts.rb', line 445
def self.verbose?(level = 1) level <= instance.program.__verbose__ end
|