Shaun Jackman 8bf28477a3 popen: Add an options argument
Useful for selectively enabling or silencing stderr, for example.
popen_read("foo", err: :err)
2017-09-20 13:25:29 -07:00

22 lines
458 B
Ruby

module Utils
def self.popen_read(*args, **options, &block)
popen(args, "rb", options, &block)
end
def self.popen_write(*args, **options, &block)
popen(args, "wb", options, &block)
end
def self.popen(args, mode, options = {})
IO.popen("-", mode) do |pipe|
if pipe
return pipe.read unless block_given?
yield pipe
else
options[:err] ||= :close
exec(*args, options)
end
end
end
end