nativescript
Version:
Command-line interface for building NativeScript projects
75 lines • 3.62 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PlatformValidationService = void 0;
const helpers = require("../../common/helpers");
const path = require("path");
const yok_1 = require("../../common/yok");
class PlatformValidationService {
constructor($errors, $fs, $logger, $mobileHelper, $platformsDataService) {
this.$errors = $errors;
this.$fs = $fs;
this.$logger = $logger;
this.$mobileHelper = $mobileHelper;
this.$platformsDataService = $platformsDataService;
}
isValidPlatform(platform, projectData) {
if (!platform) {
return false;
}
platform = platform.split("@")[0].toLowerCase();
if (!this.$platformsDataService.getPlatformData(platform, projectData)) {
return false;
}
return true;
}
validatePlatform(platform, projectData) {
if (!platform) {
this.$errors.failWithHelp("No platform specified.");
}
if (!this.isValidPlatform(platform, projectData)) {
const platformNames = helpers.formatListOfNames(this.$mobileHelper.platformNames);
this.$errors.fail(`Invalid platform ${platform}. Valid platforms are ${platformNames}.`);
}
}
validatePlatformInstalled(platform, projectData) {
this.validatePlatform(platform, projectData);
const hasPlatformDirectory = this.$fs.exists(path.join(projectData.platformsDir, platform.toLowerCase()));
if (!hasPlatformDirectory) {
this.$errors.fail("The platform %s is not added to this project. Please use 'ns platform add <platform>'", platform);
}
}
async validateOptions(provision, teamId, projectData, platform, aab) {
if (platform && !this.$mobileHelper.isAndroidPlatform(platform) && aab) {
this.$errors.fail("The --aab option is supported only for the Android platform.");
}
if (platform) {
platform = this.$mobileHelper.normalizePlatformName(platform);
this.$logger.trace("Validate options for platform: " + platform);
const platformData = this.$platformsDataService.getPlatformData(platform, projectData);
const result = await platformData.platformProjectService.validateOptions(projectData.projectIdentifiers[platform.toLowerCase()], provision, teamId);
return result;
}
else {
let valid = true;
const platforms = this.$mobileHelper.platformNames.map((p) => p.toLowerCase());
for (const availablePlatform of platforms) {
this.$logger.trace("Validate options for platform: " + availablePlatform);
const platformData = this.$platformsDataService.getPlatformData(availablePlatform, projectData);
valid =
valid &&
(await platformData.platformProjectService.validateOptions(projectData.projectIdentifiers[availablePlatform.toLowerCase()], provision, teamId));
}
return valid;
}
}
isPlatformSupportedForOS(platform, projectData) {
const targetedOS = this.$platformsDataService.getPlatformData(platform, projectData).targetedOS;
const res = !targetedOS ||
targetedOS.indexOf("*") >= 0 ||
targetedOS.indexOf(process.platform) >= 0;
return res;
}
}
exports.PlatformValidationService = PlatformValidationService;
yok_1.injector.register("platformValidationService", PlatformValidationService);
//# sourceMappingURL=platform-validation-service.js.map