# File lib/backup/pipeline.rb, line 37
    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