popen: Add an options argument

Useful for selectively enabling or silencing stderr, for example.
popen_read("foo", err: :err)
This commit is contained in:
Shaun Jackman 2017-09-19 10:18:04 -07:00
parent 5d888c08a3
commit 8bf28477a3

View File

@ -1,20 +1,20 @@
module Utils
def self.popen_read(*args, &block)
popen(args, "rb", &block)
def self.popen_read(*args, **options, &block)
popen(args, "rb", options, &block)
end
def self.popen_write(*args, &block)
popen(args, "wb", &block)
def self.popen_write(*args, **options, &block)
popen(args, "wb", options, &block)
end
def self.popen(args, mode)
def self.popen(args, mode, options = {})
IO.popen("-", mode) do |pipe|
if pipe
return pipe.read unless block_given?
yield pipe
else
$stderr.reopen("/dev/null", "w")
exec(*args)
options[:err] ||= :close
exec(*args, options)
end
end
end