class Terrapin::CommandLine::MultiPipe

Public Class Methods

new() click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 4
def initialize
  @stdout_in, @stdout_out = IO.pipe
  @stderr_in, @stderr_out = IO.pipe
end

Public Instance Methods

output() click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 13
def output
  Output.new(@stdout_output, @stderr_output)
end
pipe_options() click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 9
def pipe_options
  { out: @stdout_out, err: @stderr_out }
end
read_and_then(&block) click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 17
def read_and_then(&block)
  close_write
  read
  block.call
  close_read
end

Private Instance Methods

close_read() click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 36
def close_read
  @stdout_in.close
  @stderr_in.close
end
close_write() click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 26
def close_write
  @stdout_out.close
  @stderr_out.close
end
read() click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 31
def read
  @stdout_output = read_stream(@stdout_in)
  @stderr_output = read_stream(@stderr_in)
end
read_stream(io) click to toggle source
# File lib/terrapin/command_line/multi_pipe.rb, line 41
def read_stream(io)
  result = ""
  while partial_result = io.read(8192)
    result << partial_result
  end
  result
end