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
|
module Utils
|
||||||
def self.popen_read(*args, &block)
|
def self.popen_read(*args, **options, &block)
|
||||||
popen(args, "rb", &block)
|
popen(args, "rb", options, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.popen_write(*args, &block)
|
def self.popen_write(*args, **options, &block)
|
||||||
popen(args, "wb", &block)
|
popen(args, "wb", options, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.popen(args, mode)
|
def self.popen(args, mode, options = {})
|
||||||
IO.popen("-", mode) do |pipe|
|
IO.popen("-", mode) do |pipe|
|
||||||
if pipe
|
if pipe
|
||||||
return pipe.read unless block_given?
|
return pipe.read unless block_given?
|
||||||
yield pipe
|
yield pipe
|
||||||
else
|
else
|
||||||
$stderr.reopen("/dev/null", "w")
|
options[:err] ||= :close
|
||||||
exec(*args)
|
exec(*args, options)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user