jovo-cli
Version:
jovo command line tool (beta)
94 lines • 3.5 kB
JavaScript
;
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