class Released::Piper
Public Class Methods
new(stdout: $stdout, stderr: $stderr)
click to toggle source
@param [IO] stdout @param [IO] stderr
# File lib/released/piper.rb, line 18 def initialize(stdout: $stdout, stderr: $stderr) @stdout = stdout @stderr = stderr end
Public Instance Methods
run(cmd, input)
click to toggle source
@param [Array<String>] cmd
@param [String, nil] input
# File lib/released/piper.rb, line 26 def run(cmd, input) Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thr| stdout_thread = Thread.new { @stdout << stdout.read } stderr_thread = Thread.new { @stderr << stderr.read } if input stdin << input end stdin.close stdout_thread.join stderr_thread.join exit_status = wait_thr.value unless exit_status.success? raise Error.new(cmd, exit_status.to_i) end end end