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