// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
// also check out this cool things
// https://www.npmjs.com/package/envinfo // does not list all required info
// https://www.npmjs.com/package/command-exists // might find its use later on
import * as semver from "semver";
import { PromiseUtil } from "../../../../common/node/promise";
import { PackageVersion } from "../../../../common/projectVersionHelper";
import { adbAndroid, adbExpo } from "./adb";
import cocoaPods from "./cocoaPods";
import emulator from "./emulator";
import { androidHome } from "./env";
import gradle from "./gradle";
import java from "./java";
import nodeJs from "./nodeJS";
import npm from "./npm";
import watchman from "./watchman";
import iosDeploy from "./iosDeploy";
import { xcodeBuild, xcodeBuildVersionRNmacOS } from "./xcodebuild";
import expoCli from "./expoCli";
import devmode from "./devmode";
import visualStudio from "./visualStudio";
import longPath from "./longPath";
import windows from "./windows";
import dotnet from "./dotnet";
import xcodecli from "./xcodecli";
import macos from "./macos";
import { IValidation } from "./types";
export const getChecks = (versions: PackageVersion[] = []): IValidation[] => {
// if some checks become obsolete (e.g. no need to check both npm and yarn) - write logic here
const checks: IValidation[] = [
iosDeploy,
adbAndroid,
adbExpo,
emulator,
androidHome,
java,
nodeJs,
gradle,
cocoaPods,
npm,
watchman,
expoCli,
devmode,
visualStudio,
longPath,
windows,
dotnet,
xcodecli,
macos,
xcodeBuild,
xcodeBuildVersionRNmacOS,
];
const rnVersionContainer = versions.find(it => Object.keys(it).includes("reactNativeVersion"));
if (
rnVersionContainer &&
semver.gte(rnVersionContainer.reactNativeVersion, "0.68.0") &&
["linux", "darwin"].includes(process.platform)
) {
const androidEnvCheck = checks.find(it => it.label === "Android Env");
if (androidEnvCheck) {
androidEnvCheck.exec = androidEnvCheck.exec.bind(null, "ANDROID_SDK_ROOT");
}
}
checks.forEach(it => {
it.exec = PromiseUtil.promiseCacheDecorator(it.exec);
});
return checks.filter(it => (it.platform ? it.platform.includes(process.platform) : true));
};microsoft/vscode-react-native
Publicmirrored from https://github.com/microsoft/vscode-react-nativeAvailable
src/extension/services/validationService/checks/index.ts
77lines · modepreview