From ff956d87fce80cfa373065d0cb328a5aaed27900 Mon Sep 17 00:00:00 2001 From: isaacs Date: Sat, 9 May 2015 21:12:37 -0700 Subject: [PATCH] Handle lower-case 'env.Path' on Windows --- which.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/which.js b/which.js index 2a1ac92..889940f 100644 --- a/which.js +++ b/which.js @@ -27,9 +27,22 @@ function which (cmd, opt, cb) { } var colon = opt.colon || COLON - var pathEnv = (opt.path || process.env.PATH || '').split(colon) + var pathEnv = opt.path || process.env.PATH || '' var pathExt = [''] + // On windows, env.Path is common. + if (process.platform === 'win32' && !pathEnv) { + var k = Object.keys(process.env) + for (var p = 0; p < k.length; p++) { + if (p.toLowerCase() === 'path') { + pathEnv = process.env[p] + break + } + } + } + + pathEnv = pathEnv.split(colon) + if (process.platform === 'win32') { pathEnv.push(process.cwd()) pathExt = opt.pathExt || (process.env.PATHEXT || '.EXE').split(colon) @@ -66,9 +79,22 @@ function whichSync (cmd, opt) { var colon = opt.colon || COLON - var pathEnv = (opt.path || process.env.PATH || '').split(colon) + var pathEnv = opt.path || process.env.PATH || '' var pathExt = [''] + // On windows, env.Path is common. + if (process.platform === 'win32' && !pathEnv) { + var k = Object.keys(process.env) + for (var p = 0; p < k.length; p++) { + if (p.toLowerCase() === 'path') { + pathEnv = process.env[p] + break + } + } + } + + pathEnv = pathEnv.split(colon) + if (process.platform === 'win32') { pathEnv.push(process.cwd()) pathExt = (opt.pathExt || process.env.PATHEXT || '.EXE').split(colon)