def run
Open4.popen4(pipeline) do |pid, stdin, stdout, stderr|
pipestatus = stdout.read.gsub("\n", '').split(':').sort
pipestatus.each do |status|
index, exitstatus = status.split('|').map(&:to_i)
if exitstatus > 0
command = command_name(@commands[index])
@errors << SystemCallError.new(
"'#{ command }' returned exit code: #{ exitstatus }", exitstatus
)
end
end
@stderr = stderr.read.strip
end
Logger.warn(stderr_messages) if success? && stderr_messages
rescue Exception => e
raise Errors::Pipeline::ExecutionError.wrap(e)
end