popen: Add an options argument
Useful for selectively enabling or silencing stderr, for example.
popen_read("foo", err: :err)
This commit is contained in:
parent
5d888c08a3
commit
8bf28477a3
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user