12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- '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
|