From 5a966a1ec8662d2e0b9035675a770c6f2c739b7d Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 25 Aug 2013 23:52:24 +0000 Subject: process: allow passing env to qx This should allow us to more easily transfer user-configured environment variables to helper tools (avprobe/soxi). --- lib/dtas/process.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/dtas/process.rb b/lib/dtas/process.rb index 2d7dcb0..3f1dc07 100644 --- a/lib/dtas/process.rb +++ b/lib/dtas/process.rb @@ -3,6 +3,7 @@ # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) require 'shellwords' require 'io/wait' +require_relative '../dtas' module DTAS::Process # :nodoc: PIDS = {} @@ -43,7 +44,11 @@ module DTAS::Process # :nodoc: # this is like backtick, but takes an array instead of a string # This will also raise on errors - def qx(cmd, opts = {}) + def qx(env, cmd = {}, opts = {}) + unless Hash === env + cmd, opts = env, cmd + env = {} + end r, w = IO.pipe opts = opts.merge(out: w) r.binmode @@ -53,7 +58,7 @@ module DTAS::Process # :nodoc: opts[:err] = we end pid = begin - Process.spawn(*cmd, opts) + Process.spawn(env, *cmd, opts) rescue Errno::EINTR # Ruby bug? retry end -- cgit v1.2.3-24-ge0c7