Class: Bwkfanboy::CliUtils
- Inherits:
-
Object
- Object
- Bwkfanboy::CliUtils
- Defined in:
- lib/bwkfanboy/cliutils.rb
Overview
Common routines useful in any CLI program.
Constant Summary collapse
- DIR_LIB_SRC =
Physical location of program libraries.
Pathname.new File.dirname(__FILE__)
- NNL_MARK =
veputs uses this to decide to put a newline or not to put.
'__NNL__'
- @@verbose =
Class-wide verbosity level.
0
Class Method Summary collapse
-
.debug ⇒ Object
A handy check.
-
.errx(exit_code = 0, msg) ⇒ Object
Print an error msg & exit if exit_code > 0.
-
.exec(cmd) ⇒ Object
Execute cmd and return an array [exit_status, stderr, stdout].
-
.getBacktrace ⇒ Object
A handy method that return a nicely formatted current global backtrace.
-
.getVerbose ⇒ Object
Getter.
-
.veputs(level, msg) ⇒ Object
- level
-
Verbosity level.
-
.verbose=(val) ⇒ Object
Setter.
-
.warnx(msg) ⇒ Object
Print a warning.
-
.which(file) ⇒ Object
Analogue to a shell command
which
.
Class Method Details
.debug ⇒ Object
A handy check. Use it like:
puts (CliUtils.debug ? “DEBUG mode” : “”)
52 53 54 |
# File 'lib/bwkfanboy/cliutils.rb', line 52 def self.debug @@verbose >= 2 end |
.errx(exit_code = 0, msg) ⇒ Object
Print an error msg & exit if exit_code > 0.
63 64 65 66 |
# File 'lib/bwkfanboy/cliutils.rb', line 63 def self.errx(exit_code = 0, msg) $stderr.puts File.basename($0) + ' error: ' + msg.to_s exit exit_code if exit_code > 0 end |
.exec(cmd) ⇒ Object
Execute cmd and return an array [exit_status, stderr, stdout].
102 103 104 105 106 107 108 109 |
# File 'lib/bwkfanboy/cliutils.rb', line 102 def self.exec(cmd) so = sr = '' status = Open4::popen4(cmd) { |pid, stdin, stdout, stderr| so = stdout.read sr = stderr.read } [status.exitstatus, sr, so] end |
.getBacktrace ⇒ Object
A handy method that return a nicely formatted current global backtrace.
58 59 60 |
# File 'lib/bwkfanboy/cliutils.rb', line 58 def self.getBacktrace "#{$!}\n\nBacktrace:\n\n#{$!.backtrace.join("\n")}" end |
.getVerbose ⇒ Object
Getter.
45 46 47 |
# File 'lib/bwkfanboy/cliutils.rb', line 45 def self.getVerbose @@verbose end |
.veputs(level, msg) ⇒ Object
- level
-
Verbosity level.
- msg
-
A message to print.
Don’t print msg with a newline if it contains NNL_MARK at the end.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/bwkfanboy/cliutils.rb', line 77 def self.veputs(level, msg) t = msg.dup nnl = false if t.match(/#{NNL_MARK}$/) t.sub!(/#{$&}/, '') nnl = true end if @@verbose >= level nnl ? print(t) : print("#{t}\n") $stdout.flush end end |
.verbose=(val) ⇒ Object
Setter.
40 41 42 |
# File 'lib/bwkfanboy/cliutils.rb', line 40 def self.verbose=(val) @@verbose = val end |
.warnx(msg) ⇒ Object
Print a warning.
69 70 71 |
# File 'lib/bwkfanboy/cliutils.rb', line 69 def self.warnx(msg) $stderr.puts File.basename($0) + ' warning: ' + msg.to_s end |
.which(file) ⇒ Object
Analogue to a shell command which
.
93 94 95 96 97 98 99 |
# File 'lib/bwkfanboy/cliutils.rb', line 93 def self.which(file) return true if file =~ %r%\A/% and File.exist? file ENV['PATH'].split(File::PATH_SEPARATOR).any? do |path| File.exist? File.join(path, file) end end |