# File lib/cocaine/command_line.rb, line 24 def environment @supplemental_environment ||= {} end
# File lib/cocaine/command_line.rb, line 32 def fake! @runner = FakeRunner.new end
# File lib/cocaine/command_line.rb, line 52 def initialize(binary, params = "", options = {}) @binary = binary.dup @params = params.dup @options = options.dup @runner = @options.delete(:runner) || self.class.runner @logger = @options.delete(:logger) || self.class.logger @swallow_stderr = @options.delete(:swallow_stderr) @expected_outcodes = @options.delete(:expected_outcodes) || [0] @environment = @options.delete(:environment) || {} end
# File lib/cocaine/command_line.rb, line 6 def path @supplemental_path end
# File lib/cocaine/command_line.rb, line 9 def path=(supplemental_path) @supplemental_path = supplemental_path @supplemental_environment ||= {} @supplemental_environment['PATH'] = [ENV['PATH'], *supplemental_path].join(File::PATH_SEPARATOR) end
# File lib/cocaine/command_line.rb, line 15 def posix_spawn_available? @posix_spawn_available ||= begin require 'posix/spawn' true rescue LoadError => e false end end
# File lib/cocaine/command_line.rb, line 36 def unfake! @runner = nil end
# File lib/cocaine/command_line.rb, line 63 def command(interpolations = {}) cmd = [] cmd << @binary cmd << interpolate(@params, interpolations) cmd << bit_bucket if @swallow_stderr cmd.join(" ").strip end
# File lib/cocaine/command_line.rb, line 71 def run(interpolations = {}) output = '' begin full_command = command(interpolations) log("#{colored("Command")} :: #{full_command}") output = execute(full_command) rescue Errno::ENOENT raise Cocaine::CommandNotFoundError ensure @exit_status = $?.exitstatus end if $?.exitstatus == 127 raise Cocaine::CommandNotFoundError end unless @expected_outcodes.include?($?.exitstatus) raise Cocaine::ExitStatusError, "Command '#{command}' returned #{$?.exitstatus}. Expected #{@expected_outcodes.join(", ")}" end output end
# File lib/cocaine/command_line.rb, line 91 def unix? RbConfig::CONFIG['host_os'] !~ %rmswin|mingw/ end