diff options
Diffstat (limited to 'deps/npm/node_modules/node-gyp/lib/find-vs2017.js')
-rw-r--r-- | deps/npm/node_modules/node-gyp/lib/find-vs2017.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/deps/npm/node_modules/node-gyp/lib/find-vs2017.js b/deps/npm/node_modules/node-gyp/lib/find-vs2017.js new file mode 100644 index 0000000000..8c79e9ec9b --- /dev/null +++ b/deps/npm/node_modules/node-gyp/lib/find-vs2017.js @@ -0,0 +1,46 @@ +var log = require('npmlog') + , execFile = require('child_process').execFile + , path = require('path') + +function findVS2017(callback) { + var ps = path.join(process.env.SystemRoot, 'System32', 'WindowsPowerShell', + 'v1.0', 'powershell.exe') + var csFile = path.join(__dirname, 'Find-VS2017.cs') + var psArgs = ['-ExecutionPolicy', 'Unrestricted', '-Command', + '&{Add-Type -Path \'' + csFile + + '\'; [VisualStudioConfiguration.Main]::Query()}'] + + log.silly('find vs2017', 'Running', ps, psArgs) + var child = execFile(ps, psArgs, { encoding: 'utf8' }, + function (err, stdout, stderr) { + log.silly('find vs2017', 'PS err:', err) + log.silly('find vs2017', 'PS stdout:', stdout) + log.silly('find vs2017', 'PS stderr:', stderr) + + if (err) + return callback(new Error('Could not use PowerShell to find VS2017')) + + var vsSetup + try { + vsSetup = JSON.parse(stdout) + } catch (e) { + log.silly('find vs2017', e) + return callback(new Error('Could not use PowerShell to find VS2017')) + } + log.silly('find vs2017', 'vsSetup:', vsSetup) + + if (vsSetup && vsSetup.log) + log.verbose('find vs2017', vsSetup.log.trimRight()) + + if (!vsSetup || !vsSetup.path || !vsSetup.sdk) { + return callback(new Error('No usable installation of VS2017 found')) + } + + log.verbose('find vs2017', 'using installation:', vsSetup.path) + callback(null, { "path": vsSetup.path, "sdk": vsSetup.sdk }) + }) + + child.stdin.end() +} + +module.exports = findVS2017 |