class BetweenMeals::Cmd
Attributes
Public Class Methods
Source
# File lib/between_meals/cmd.rb, line 23 def initialize(params) @bin = params[:bin] || fail @cwd = params[:cwd] || Dir.pwd @logger = params[:logger] || Logger.new(STDOUT) end
Public Instance Methods
Source
# File lib/between_meals/cmd.rb, line 29 def cmd(params, cwd = nil, nofail = false) cwd ||= File.expand_path(@cwd) cmd = "#{@bin} #{params}" @logger.info("Running \"#{cmd}\"") c = Mixlib::ShellOut.new( cmd, :cwd => cwd, :env => { # macOS needs /usr/local/bin as hg cannot be installed in /bin or # /usr/bin 'PATH' => '/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin', }, ) c.run_command # If the user asked us not to fail, let them handle error reporting if c.error? && !nofail # Let's make sure the error goes to the logs @logger.error("#{@bin} failed: #{c.format_for_exception}") # if our logger is STDOUT, we'll double log when we throw # the exception, but that's OK c.error! end c end