UNPKG

nativescript

Version:

Command-line interface for building NativeScript projects

75 lines (74 loc) 3.57 kB
"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);