eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
let err = false;
|
|
|
|
const majorNodeVersion = parseInt(/^(\d+)\./.exec(process.versions.node)[1]);
|
|
|
|
if (majorNodeVersion < 10 || majorNodeVersion >= 16) {
|
|
console.error('\033[1;31m*** Please use node >=10 and <=16.\033[0;0m');
|
|
err = true;
|
|
}
|
|
|
|
const cp = require('child_process');
|
|
const yarnVersion = cp.execSync('yarn -v', { encoding: 'utf8' }).trim();
|
|
const parsedYarnVersion = /^(\d+)\.(\d+)\./.exec(yarnVersion);
|
|
const majorYarnVersion = parseInt(parsedYarnVersion[1]);
|
|
const minorYarnVersion = parseInt(parsedYarnVersion[2]);
|
|
|
|
if (majorYarnVersion < 1 || minorYarnVersion < 10) {
|
|
console.error('\033[1;31m*** Please use yarn >=1.10.1.\033[0;0m');
|
|
err = true;
|
|
}
|
|
|
|
if (!/yarn[\w-.]*\.js$|yarnpkg$/.test(process.env['npm_execpath'])) {
|
|
console.error('\033[1;31m*** Please use yarn to install dependencies.\033[0;0m');
|
|
err = true;
|
|
}
|
|
|
|
if (process.platform === 'win32') {
|
|
if (!hasSupportedVisualStudioVersion()) {
|
|
console.error('\033[1;31m*** Invalid C/C++ Compiler Toolchain. Please check https://github.com/microsoft/vscode/wiki/How-to-Contribute.\033[0;0m');
|
|
err = true;
|
|
}
|
|
}
|
|
|
|
if (err) {
|
|
console.error('');
|
|
process.exit(1);
|
|
}
|
|
|
|
function hasSupportedVisualStudioVersion() {
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
// Translated over from
|
|
// https://source.chromium.org/chromium/chromium/src/+/master:build/vs_toolchain.py;l=140-175
|
|
const supportedVersions = ['2019', '2017'];
|
|
|
|
const availableVersions = [];
|
|
for (const version of supportedVersions) {
|
|
let vsPath = process.env[`vs${version}_install`];
|
|
if (vsPath && fs.existsSync(vsPath)) {
|
|
availableVersions.push(version);
|
|
break;
|
|
}
|
|
const programFiles86Path = process.env['ProgramFiles(x86)'];
|
|
if (programFiles86Path) {
|
|
vsPath = `${programFiles86Path}/Microsoft Visual Studio/${version}`;
|
|
const vsTypes = ['Enterprise', 'Professional', 'Community', 'Preview', 'BuildTools'];
|
|
if (vsTypes.some(vsType => fs.existsSync(path.join(vsPath, vsType)))) {
|
|
availableVersions.push(version);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return availableVersions.length;
|
|
}
|