modified to use shellescape instead of gsub
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
require "foreman"
|
||||
require "shellwords"
|
||||
|
||||
class Foreman::Process
|
||||
|
||||
@@ -47,24 +48,25 @@ class Foreman::Process
|
||||
def run(options={})
|
||||
env = @options[:env].merge(options[:env] || {})
|
||||
output = options[:output] || $stdout
|
||||
runner = "#{Foreman.runner}".shellescape
|
||||
if Foreman.windows?
|
||||
Dir.chdir(cwd) do
|
||||
Process.spawn env, expanded_command(env), :out => output, :err => output
|
||||
end
|
||||
elsif Foreman.jruby_18?
|
||||
require "posix/spawn"
|
||||
wrapped_command = "#{Foreman.runner} -d #{cwd} -p -- #{command}".gsub("'", "\\\\'")
|
||||
wrapped_command = "#{runner} -d #{cwd.shellescape} -p -- #{command}"
|
||||
POSIX::Spawn.spawn env, wrapped_command, :out => output, :err => output
|
||||
elsif Foreman.ruby_18?
|
||||
fork do
|
||||
$stdout.reopen output
|
||||
$stderr.reopen output
|
||||
env.each { |k,v| ENV[k] = v }
|
||||
wrapped_command = "#{Foreman.runner} -d #{cwd} -p -- #{command}".gsub("'", "\\\\'")
|
||||
wrapped_command = "#{runner} -d #{cwd.shellescape} -p -- #{command}"
|
||||
Kernel.exec wrapped_command
|
||||
end
|
||||
else
|
||||
wrapped_command = "#{Foreman.runner} -d #{cwd} -p -- #{command}".gsub("'", "\\\\'")
|
||||
wrapped_command = "#{runner} -d #{cwd.shellescape} -p -- #{command}"
|
||||
Process.spawn env, wrapped_command, :out => output, :err => output
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user