summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/node-gyp/lib/find-vs2017.js
diff options
context:
space:
mode:
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.js46
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