Module: Bashcov
- Defined in:
- lib/bashcov.rb,
lib/bashcov/line.rb,
lib/bashcov/lexer.rb,
lib/bashcov/errors.rb,
lib/bashcov/runner.rb,
lib/bashcov/xtrace.rb,
lib/bashcov/version.rb,
lib/bashcov/detective.rb,
lib/bashcov/field_stream.rb
Overview
:nodoc:
Defined Under Namespace
Modules: Line Classes: Detective, FieldStream, Lexer, Options, Runner, Xtrace, XtraceError
Constant Summary collapse
- BASH_VERSION =
Current Bash version (e.g. 4.2)
bash_version.freeze
- VERSION =
Current Bashcov version
"3.1.3"
Class Method Summary collapse
- .bash_path ⇒ Object
- .bash_version ⇒ Object
-
.command_name ⇒ String
The value to use as
SimpleCov.command_name
. -
.fullname ⇒ String
Program name including version for easy consistent output.
-
.options ⇒ Struct
The
Struct
object representing Bashcov configuration. -
.parse_options!(args) ⇒ void
Parses the given CLI arguments and sets
options
. -
.program_name ⇒ String
Program name.
-
.set_default_options! ⇒ Object
Wipe the current options and reset default values.
Class Method Details
.bash_path ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/bashcov.rb', line 71 def bash_path # First attempt to use the value from `options`, but ignore all exceptions. # This is used early for the `BASH_VERSION` definition, so first use will likely error. begin return @options.bash_path if @options.bash_path rescue NoMethodError; end # rubocop:disable Lint/SuppressedException # Support the same `BASHCOV_BASH_PATH` environment variable used in the spec tests. return ENV.fetch("BASHCOV_BASH_PATH", nil) unless ENV.fetch("BASHCOV_BASH_PATH", "").empty? # Fall back to standard Bash location. "/bin/bash" end |
.bash_version ⇒ Object
85 86 87 |
# File 'lib/bashcov.rb', line 85 def bash_version `#{bash_path} -c 'echo -n ${BASH_VERSINFO[0]}.${BASH_VERSINFO[1]}'` end |
.command_name ⇒ String
Returns The value to use as SimpleCov.command_name
. Uses the value of --command-name
, if this flag was provided, or +BASHCOV_COMMAND_NAME, if set, defaulting to a stringified representation of #command.
64 65 66 67 68 69 |
# File 'lib/bashcov.rb', line 64 def command_name return @options.command_name if @options.command_name return ENV.fetch("BASHCOV_COMMAND_NAME", nil) unless ENV.fetch("BASHCOV_COMMAND_NAME", "").empty? command.compact.join(" ") end |
.fullname ⇒ String
fullname
instead of name to avoid clashing with Module.name
Returns Program name including version for easy consistent output.
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/bashcov.rb', line 49 def fullname [ program_name, VERSION, "with Bash #{BASH_VERSION},", "Ruby #{RUBY_VERSION},", "and SimpleCov #{SimpleCov::VERSION}", (Process.uid.zero? ? "as root user (NOT recommended)" : nil), ].compact.join(" ") end |
.options ⇒ Struct
Returns The Struct
object representing Bashcov configuration.
19 20 21 22 |
# File 'lib/bashcov.rb', line 19 def unless defined?(@options) @options end |
.parse_options!(args) ⇒ void
This method returns an undefined value.
Parses the given CLI arguments and sets options
.
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/bashcov.rb', line 28 def (args) begin option_parser.parse!(args) rescue OptionParser::ParseError, Errno::ENOENT => e abort "#{option_parser.program_name}: #{e.}" end if args.empty? abort("You must give exactly one command to execute.") else .command = args.unshift(bash_path) end end |
.program_name ⇒ String
Returns Program name.
43 44 45 |
# File 'lib/bashcov.rb', line 43 def program_name "bashcov" end |
.set_default_options! ⇒ Object
Wipe the current options and reset default values
90 91 92 93 94 95 96 |
# File 'lib/bashcov.rb', line 90 def @options = Options.new @options.skip_uncovered = false @options.mute = false @options.root_directory = Dir.getwd end |