1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const jovo_cli_platform_alexa_1 = require("jovo-cli-platform-alexa");
|
4 | const jovo_cli_platform_google_1 = require("jovo-cli-platform-google");
|
5 | const jovo_cli_core_1 = require("jovo-cli-core");
|
6 | const project = jovo_cli_core_1.getProject();
|
7 | const instances = {};
|
8 | const AVAILABLE_PLATFORMS = [
|
9 | jovo_cli_platform_alexa_1.JovoCliPlatformAlexa,
|
10 | jovo_cli_platform_google_1.JovoCliPlatformGoogle,
|
11 | ];
|
12 | function createPlatformInstance(name) {
|
13 | name = name.toString();
|
14 | for (let i = 0; i < AVAILABLE_PLATFORMS.length; i++) {
|
15 | if (AVAILABLE_PLATFORMS[i].PLATFORM_KEY === name) {
|
16 | return new AVAILABLE_PLATFORMS[i]();
|
17 | }
|
18 | }
|
19 | throw (new Error(`The platform "${name}" is not supported!`));
|
20 | }
|
21 | function getAllAvailable() {
|
22 | const platformNames = [];
|
23 | AVAILABLE_PLATFORMS.forEach((platform) => {
|
24 | platformNames.push(platform.PLATFORM_KEY);
|
25 | });
|
26 | return platformNames;
|
27 | }
|
28 | exports.getAllAvailable = getAllAvailable;
|
29 | function getAll(platform, stage) {
|
30 | if (platform) {
|
31 | return [platform];
|
32 | }
|
33 | const projectPlatforms = [];
|
34 | const config = project.getConfig(stage);
|
35 | let platformInstance;
|
36 | getAllAvailable().forEach((platformName) => {
|
37 | platformInstance = get(platformName);
|
38 | try {
|
39 | if (config.hasOwnProperty(platformName)) {
|
40 | projectPlatforms.push(platformName);
|
41 | }
|
42 | }
|
43 | catch (error) {
|
44 | if (platformInstance.hasPlatform()) {
|
45 | projectPlatforms.push(platformName);
|
46 | }
|
47 | }
|
48 | });
|
49 | return projectPlatforms;
|
50 | }
|
51 | exports.getAll = getAll;
|
52 | function get(name) {
|
53 | if (!instances.hasOwnProperty(name)) {
|
54 | instances[name] = createPlatformInstance(name);
|
55 | }
|
56 | return instances[name];
|
57 | }
|
58 | exports.get = get;
|
59 | function addCliOptions(command, vorpalCommand) {
|
60 | let platformInstance;
|
61 | getAllAvailable().forEach((platformName) => {
|
62 | platformInstance = get(platformName);
|
63 | platformInstance.getAdditionalCliOptions(command, vorpalCommand);
|
64 | });
|
65 | }
|
66 | exports.addCliOptions = addCliOptions;
|
67 | function validateCliOptions(command, args) {
|
68 | let platformInstance;
|
69 | const allPlatforms = getAllAvailable();
|
70 | for (let i = 0; i < allPlatforms.length; i++) {
|
71 | platformInstance = get(allPlatforms[i]);
|
72 | if (!platformInstance.validateAdditionalCliOptions(command, args)) {
|
73 | return false;
|
74 | }
|
75 | }
|
76 | return true;
|
77 | }
|
78 | exports.validateCliOptions = validateCliOptions;
|
79 |
|
\ | No newline at end of file |