$
This commit is contained in:
49
node_modules/spawn-wrap/lib/mungers/env.js
generated
vendored
Normal file
49
node_modules/spawn-wrap/lib/mungers/env.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
|
||||
const isWindows = require("is-windows")
|
||||
const path = require("path")
|
||||
const homedir = require("../homedir")
|
||||
|
||||
const pathRe = isWindows() ? /^PATH=/i : /^PATH=/;
|
||||
|
||||
/**
|
||||
* Updates the environment variables to intercept `node` commands and pass down options.
|
||||
*
|
||||
* @param workingDir {string} Absolute system-dependent path to the directory containing the shim files.
|
||||
* @param options {import("../munge").InternalSpawnOptions} Original internal spawn options.
|
||||
* @return {import("../munge").InternalSpawnOptions} Updated internal spawn options.
|
||||
*/
|
||||
function mungeEnv(workingDir, options) {
|
||||
let pathEnv
|
||||
|
||||
const envPairs = options.envPairs.map((ep) => {
|
||||
if (pathRe.test(ep)) {
|
||||
// `PATH` env var: prefix its value with `workingDir`
|
||||
// `5` corresponds to the length of `PATH=`
|
||||
pathEnv = ep.substr(5)
|
||||
const k = ep.substr(0, 5)
|
||||
return k + workingDir + path.delimiter + pathEnv
|
||||
} else {
|
||||
// Return as-is
|
||||
return ep;
|
||||
}
|
||||
});
|
||||
|
||||
if (pathEnv === undefined) {
|
||||
envPairs.push((isWindows() ? 'Path=' : 'PATH=') + workingDir)
|
||||
}
|
||||
if (options.originalNode) {
|
||||
const key = path.basename(workingDir).substr('.node-spawn-wrap-'.length)
|
||||
envPairs.push('SW_ORIG_' + key + '=' + options.originalNode)
|
||||
}
|
||||
|
||||
envPairs.push('SPAWN_WRAP_SHIM_ROOT=' + homedir)
|
||||
|
||||
if (process.env.SPAWN_WRAP_DEBUG === '1') {
|
||||
envPairs.push('SPAWN_WRAP_DEBUG=1')
|
||||
}
|
||||
|
||||
return {...options, envPairs};
|
||||
}
|
||||
|
||||
module.exports = mungeEnv
|
Reference in New Issue
Block a user