From 5325000fa616cf9b28bf3a05608a04435e62941d Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Tue, 12 Jun 2018 10:44:12 -0700 Subject: [PATCH] Add helper option for setting custom module path on PowerShell executes --- lib/vagrant/util/powershell.rb | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/vagrant/util/powershell.rb b/lib/vagrant/util/powershell.rb index 8e48aad1d..3347e6d36 100644 --- a/lib/vagrant/util/powershell.rb +++ b/lib/vagrant/util/powershell.rb @@ -54,8 +54,12 @@ module Vagrant if opts.delete(:sudo) || opts.delete(:runas) powerup_command(path, args, opts) else - env = opts.delete(:env) - if env + if mpath = opts.delete(:module_path) + m_env = opts.fetch(:env, {}) + m_env["PSModulePath"] = "$env:PSModulePath+';#{mpath}'" + opts[:env] = m_env + end + if env = opts.delete(:env) env = env.map{|k,v| "$env:#{k}=#{v}"}.join(";") + "; " end command = [ @@ -85,8 +89,12 @@ module Vagrant # Returns stdout string if exit code is zero. def self.execute_cmd(command, **opts) validate_install! - env = opts.delete(:env) - if env + if mpath = opts.delete(:module_path) + m_env = opts.fetch(:env, {}) + m_env["PSModulePath"] = "$env:PSModulePath+';#{mpath}'" + opts[:env] = m_env + end + if env = opts.delete(:env) env = env.map{|k,v| "$env:#{k}=#{v}"}.join(";") + "; " end c = [ @@ -112,8 +120,12 @@ module Vagrant # @param [Block] block Ruby block def self.execute_inline(*command, **opts, &block) validate_install! - env = opts.delete(:env) - if env + if mpath = opts.delete(:module_path) + m_env = opts.fetch(:env, {}) + m_env["PSModulePath"] = "$env:PSModulePath+';#{mpath}'" + opts[:env] = m_env + end + if env = opts.delete(:env) env = env.map{|k,v| "$env:#{k}=#{v}"}.join(";") + "; " end c = [