class Mercurial::Command

Private Instance Methods

execution_proc() click to toggle source

need to use popen3 on windows - popen4 always eventually calls fork

# File lib/core_ext/mercurial-ruby/command.rb, line 9
def execution_proc
  proc do
    debug(command)
    result = ''
    error = ''
    status = nil
    Open3.popen3(command) do |_stdin, stdout, stderr, wait_thread|
      Timeout.timeout(timeout) do
        while (tmp = stdout.read(102_400))
          result += tmp
        end
      end

      while (tmp = stderr.read(1024))
        error += tmp
      end
      status = wait_thread.value
    end
    raise_error_if_needed(status, error)
    result
  end
end