UNPKG

jovo-cli

Version:
94 lines 3.5 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const _ = __importStar(require("lodash")); const jovo_cli_core_1 = require("jovo-cli-core"); const jovo_cli_platform_alexa_1 = require("jovo-cli-platform-alexa"); const jovo_cli_platform_google_1 = require("jovo-cli-platform-google"); const jovo_cli_platform_spokestack_1 = require("jovo-cli-platform-spokestack"); const jovo_cli_platform_google_ca_1 = require("jovo-cli-platform-google-ca"); const AVAILABLE_PLATFORMS = [ jovo_cli_platform_alexa_1.JovoCliPlatformAlexa, jovo_cli_platform_google_1.JovoCliPlatformGoogle, jovo_cli_platform_spokestack_1.JovoCliPlatformSpokestack, jovo_cli_platform_google_ca_1.JovoCliPlatformGoogleCA, ]; const instances = {}; const project = jovo_cli_core_1.getProject(); function getAllAvailable() { const platformKeys = AVAILABLE_PLATFORMS.map((platform) => platform.PLATFORM_KEY); return _.uniq(platformKeys); } exports.getAllAvailable = getAllAvailable; function get(platform, stage) { if (!instances.hasOwnProperty(platform)) { instances[platform] = createPlatformInstance(platform, stage); } return instances[platform]; } exports.get = get; function getAll(platform, stage) { if (platform) { return [platform]; } const projectPlatforms = []; const config = project.getConfig(stage); for (const platformName of getAllAvailable()) { const platformInstance = get(platformName); try { if (config.hasOwnProperty(platformName)) { projectPlatforms.push(platformName); } } catch (err) { if (platformInstance.hasPlatform()) { projectPlatforms.push(platformName); } } } return projectPlatforms; } exports.getAll = getAll; function createPlatformInstance(platformKey, stage) { if (!stage) { const stageIndex = process.argv.findIndex((el) => el === '--stage'); if (stageIndex > -1) { stage = process.argv[stageIndex + 1]; } } const config = project.getConfig(stage); let nluKey = _.get(config, `${platformKey}.nlu`); if (typeof nluKey === 'object') { nluKey = nluKey.name; } const Platform = AVAILABLE_PLATFORMS.find((el) => el.NLU_KEY === nluKey) || AVAILABLE_PLATFORMS.find((el) => !el.NLU_KEY && el.PLATFORM_KEY === platformKey); if (!Platform) { throw new jovo_cli_core_1.JovoCliError(`The platform ${platformKey} is not supported!`, 'jovo-cli'); } return new Platform(); } function addCliOptions(command, options) { for (const platform of getAllAvailable()) { const instance = createPlatformInstance(platform); instance.getAdditionalCliOptions(command, options); } } exports.addCliOptions = addCliOptions; function validateCliOptions(command, options) { for (const platform of getAllAvailable()) { const instance = createPlatformInstance(platform); if (!instance.validateAdditionalCliOptions(command, options)) { return false; } } return true; } exports.validateCliOptions = validateCliOptions; //# sourceMappingURL=Platforms.js.map