module Luffa
Constants
- VERSION
Public Class Methods
log_fail(msg)
click to toggle source
# File lib/luffa/logging.rb, line 14 def self.log_fail(msg) puts "\033[31mFAIL: #{msg}\033[0m" if msg end
log_info(msg)
click to toggle source
# File lib/luffa/logging.rb, line 18 def self.log_info(msg) puts "\033[35mINFO: #{msg}\033[0m" if msg end
log_pass(msg)
click to toggle source
# File lib/luffa/logging.rb, line 6 def self.log_pass(msg) puts "\033[32mPASS: #{msg}\033[0m" if msg end
log_unix_cmd(msg)
click to toggle source
# File lib/luffa/logging.rb, line 2 def self.log_unix_cmd(msg) puts "\033[36mEXEC: #{msg}\033[0m" if msg end
log_warn(msg)
click to toggle source
# File lib/luffa/logging.rb, line 10 def self.log_warn(msg) puts "\033[34mWARN: #{msg}\033[0m" end
unix_command(cmd, opts={})
click to toggle source
# File lib/luffa/unix_command.rb, line 2 def self.unix_command(cmd, opts={}) default_opts = {:pass_msg => nil, :fail_msg => nil, :exit_on_nonzero_status => true, :env_vars => {}, :log_cmd => true, :obscure_fields => [], :split_cmd => false} merged_opts = default_opts.merge(opts) obscure_fields = merged_opts[:obscure_fields] if not obscure_fields.empty? and merged_opts[:log_cmd] obscured = cmd.split(' ').map do |token| if obscure_fields.include? token "#{token[0,1]}***#{token[token.length-1,1]}" else token end end Luffa.log_unix_cmd obscured.join(' ') elsif merged_opts[:log_cmd] Luffa.log_unix_cmd cmd end exit_on_err = merged_opts[:exit_on_nonzero_status] unless exit_on_err system 'set +e' end env_vars = merged_opts[:env_vars] if merged_opts[:split_cmd] ['|', '>', '&'].each do |character| if cmd.include?(character) raise "Cannot split command '#{cmd}' because it contains character '#{character}'" end end tokens = cmd.split(' ') res = system(env_vars, tokens.shift, *tokens) else res = system(env_vars, cmd) end exit_code = $?.exitstatus if res Luffa.log_pass merged_opts[:pass_msg] else Luffa.log_fail merged_opts[:fail_msg] exit exit_code if exit_on_err end system 'set -e' exit_code end