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/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.4.3"
Class Method Summary collapse
- .debug(message, newline: true) ⇒ Object
- .debug? ⇒ Boolean
- .error(subject = nil, message) ⇒ Object
- .failure(message) ⇒ Object
- .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
- .quiet? ⇒ Boolean
-
.shellopts ⇒ Object
TODO: Yt.
-
.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
475 476 477 478 479 480 481 |
# File 'lib/shellopts.rb', line 475 def self.debug(, newline: true) method = newline ? :puts : :print if debug? $stdout.send(method, ) $stdout.flush end end |
.debug? ⇒ Boolean
434 |
# File 'lib/shellopts.rb', line 434 def self.debug?() instance.program.__debug__ end |
.error(subject = nil, message) ⇒ Object
436 437 438 439 440 |
# File 'lib/shellopts.rb', line 436 def self.error(subject = nil, ) instance.error(subject, ) if instance? # Never returns $stderr.puts "#{File.basename($PROGRAM_NAME)}: #{}" exit 1 end |
.failure(message) ⇒ Object
442 443 444 445 446 |
# File 'lib/shellopts.rb', line 442 def self.failure() instance.failure() if instance? $stderr.puts "#{File.basename($PROGRAM_NAME)}: #{}" exit 1 end |
.instance ⇒ Object
420 |
# File 'lib/shellopts.rb', line 420 def self.instance() @instance or raise Error, "ShellOpts is not initialized" end |
.instance=(instance) ⇒ Object
421 |
# File 'lib/shellopts.rb', line 421 def self.instance=(instance) @instance = instance end |
.instance? ⇒ Boolean
419 |
# File 'lib/shellopts.rb', line 419 def self.instance?() !@instance.nil? end |
.mesg(message, newline: true) ⇒ Object
Emit a message on standard output. The –quiet option suppresses these messages
458 459 460 461 462 463 464 |
# File 'lib/shellopts.rb', line 458 def self.mesg(, newline: true) method = newline ? :puts : :print if !quiet? $stdout.send(method, ) $stdout.flush end end |
.notice(message, newline: true) ⇒ Object
Emit a message on standard error. The –silent option suppresses these messages
449 450 451 452 453 454 455 |
# File 'lib/shellopts.rb', line 449 def self.notice(, newline: true) method = newline ? :puts : :print if !silent? $stderr.send(method, ) $stderr.flush end end |
.process(spec, argv, silent: nil, quiet: nil, verbose: nil, debug: nil, **opts) ⇒ Object
406 407 408 409 410 411 412 413 414 |
# File 'lib/shellopts.rb', line 406 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 |
.quiet? ⇒ Boolean
432 |
# File 'lib/shellopts.rb', line 432 def self.quiet?() silent? || instance.program.__quiet__ end |
.shellopts ⇒ Object
TODO: Yt
422 |
# File 'lib/shellopts.rb', line 422 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.
431 |
# File 'lib/shellopts.rb', line 431 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
467 468 469 470 471 472 473 |
# File 'lib/shellopts.rb', line 467 def self.verb(level = 1, , newline: true) method = newline ? :puts : :print if verbose?(level) $stdout.send(method, ) $stdout.flush end end |
.verbose?(level = 1) ⇒ Boolean
433 |
# File 'lib/shellopts.rb', line 433 def self.verbose?(level = 1) level <= instance.program.__verbose__ end |