@contrail/cli 1.0.67 → 1.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +53 -53
- package/.vscode/settings.json +5 -5
- package/README.md +5 -5
- package/bin/init +3 -3
- package/lib/api/apps.d.ts +13 -13
- package/lib/api/apps.js +85 -85
- package/lib/api/event-workflow-action-definition.d.ts +1 -1
- package/lib/api/event-workflow-action-definition.js +7 -7
- package/lib/api/event-workflow-template-definition.d.ts +6 -6
- package/lib/api/event-workflow-template-definition.js +20 -20
- package/lib/api/event-workflow-templates.d.ts +7 -7
- package/lib/api/event-workflow-templates.js +25 -25
- package/lib/apps/create-app/create.d.ts +1 -1
- package/lib/apps/create-app/create.js +60 -59
- package/lib/apps/create-app/setup-template.d.ts +1 -1
- package/lib/apps/create-app/setup-template.js +34 -34
- package/lib/apps/deploy-app/actions-deployer.d.ts +11 -11
- package/lib/apps/deploy-app/actions-deployer.js +114 -114
- package/lib/apps/deploy-app/app-deployer.d.ts +8 -8
- package/lib/apps/deploy-app/app-deployer.js +93 -93
- package/lib/apps/deploy-app/app-template-parsers.d.ts +7 -7
- package/lib/apps/deploy-app/app-template-parsers.js +38 -38
- package/lib/apps/deploy-app/deploy.d.ts +2 -2
- package/lib/apps/deploy-app/deploy.js +58 -58
- package/lib/apps/install-app/app-installer.d.ts +2 -2
- package/lib/apps/install-app/app-installer.js +120 -120
- package/lib/apps/upgrade-app/app-upgrader.d.ts +3 -3
- package/lib/apps/upgrade-app/app-upgrader.js +126 -126
- package/lib/auth/auth.d.ts +9 -9
- package/lib/auth/auth.js +2 -2
- package/lib/auth/login.d.ts +2 -2
- package/lib/auth/login.js +141 -141
- package/lib/cli.d.ts +5 -5
- package/lib/cli.js +524 -481
- package/lib/colors/color-loader.d.ts +2 -2
- package/lib/colors/color-loader.js +96 -96
- package/lib/common.d.ts +1 -1
- package/lib/common.js +5 -5
- package/lib/config/config.d.ts +6 -6
- package/lib/config/config.js +70 -70
- package/lib/config/configCommands.d.ts +3 -3
- package/lib/config/configCommands.js +34 -34
- package/lib/interfaces.d.ts +191 -191
- package/lib/interfaces.js +25 -25
- package/lib/loader-process/loader-process.d.ts +2 -2
- package/lib/loader-process/loader-process.js +120 -120
- package/lib/projects/interfaces.d.ts +77 -77
- package/lib/projects/interfaces.js +23 -23
- package/lib/projects/project-exporter.d.ts +2 -2
- package/lib/projects/project-exporter.js +187 -187
- package/lib/projects/project-uploader.d.ts +1 -1
- package/lib/projects/project-uploader.js +105 -105
- package/lib/types/allUploader.d.ts +1 -1
- package/lib/types/allUploader.js +24 -24
- package/lib/types/csv-parser.d.ts +1 -1
- package/lib/types/csv-parser.js +51 -51
- package/lib/types/interfaces.d.ts +55 -55
- package/lib/types/interfaces.js +1 -1
- package/lib/types/option-set-hierarchy-exporter.d.ts +1 -1
- package/lib/types/option-set-hierarchy-exporter.js +113 -113
- package/lib/types/option-set-hierarchy-parser.d.ts +2 -2
- package/lib/types/option-set-hierarchy-parser.js +140 -140
- package/lib/types/option-set-hierarchy-uploader.d.ts +1 -1
- package/lib/types/option-set-hierarchy-uploader.js +113 -113
- package/lib/types/option-set-merger.d.ts +1 -1
- package/lib/types/option-set-merger.js +105 -102
- package/lib/types/option-set-parser.d.ts +3 -1
- package/lib/types/option-set-parser.js +140 -50
- package/lib/types/option-set-uploader.d.ts +1 -1
- package/lib/types/option-set-uploader.js +98 -98
- package/lib/types/parse-types.d.ts +4 -4
- package/lib/types/parse-types.js +189 -189
- package/lib/types/rule-set-uploader.d.ts +1 -1
- package/lib/types/rule-set-uploader.js +172 -172
- package/lib/types/type-property-policy-uploader.d.ts +1 -1
- package/lib/types/type-property-policy-uploader.js +178 -178
- package/lib/types/types-extractor.d.ts +27 -27
- package/lib/types/types-extractor.js +318 -318
- package/lib/types/types-properties-merger.d.ts +1 -1
- package/lib/types/types-properties-merger.js +75 -75
- package/lib/types/types-uploader.d.ts +1 -1
- package/lib/types/types-uploader.js +239 -239
- package/lib/types/usage-info-uploader.d.ts +1 -1
- package/lib/types/usage-info-uploader.js +132 -132
- package/lib/users/user-exporter.d.ts +1 -0
- package/lib/users/user-exporter.js +41 -0
- package/lib/users/user-uploader.d.ts +1 -0
- package/lib/users/user-uploader.js +45 -0
- package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +2 -2
- package/lib/workflow-template-definitions/workflow-template-definition-commands.js +10 -10
- package/lib/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
- package/lib/workflow-template-definitions/workflow-template-definition-deployer.js +151 -151
- package/lib/workflow-templates/local-workflow-template-deployer.d.ts +11 -11
- package/lib/workflow-templates/local-workflow-template-deployer.js +102 -102
- package/lib/workflow-templates/workflow-template-commands.d.ts +4 -4
- package/lib/workflow-templates/workflow-template-commands.js +51 -51
- package/lib/workflow-templates/workflow-template-deployer.d.ts +4 -4
- package/lib/workflow-templates/workflow-template-deployer.js +26 -26
- package/package.json +72 -72
- package/publish.bat +5 -0
- package/publish.sh +4 -4
- package/src/api/apps.ts +96 -96
- package/src/api/event-workflow-action-definition.ts +7 -7
- package/src/api/event-workflow-template-definition.ts +22 -22
- package/src/api/event-workflow-templates.ts +28 -28
- package/src/apps/create-app/create.ts +74 -73
- package/src/apps/create-app/setup-template.ts +37 -37
- package/src/apps/deploy-app/actions-deployer.ts +140 -140
- package/src/apps/deploy-app/app-deployer.ts +105 -105
- package/src/apps/deploy-app/app-template-parsers.ts +43 -43
- package/src/apps/deploy-app/deploy.ts +65 -65
- package/src/apps/install-app/app-installer.ts +125 -125
- package/src/apps/upgrade-app/app-upgrader.ts +131 -131
- package/src/auth/auth.ts +9 -9
- package/src/auth/login.ts +155 -155
- package/src/cli.ts +540 -496
- package/src/colors/color-loader.ts +112 -112
- package/src/colors/colors.csv +866 -866
- package/src/common.ts +4 -4
- package/src/config/config.ts +74 -74
- package/src/config/configCommands.ts +37 -37
- package/src/interfaces.ts +200 -200
- package/src/loader-process/loader-process.ts +151 -151
- package/src/projects/interfaces.ts +72 -72
- package/src/projects/project-exporter.ts +224 -224
- package/src/projects/project-uploader.ts +130 -130
- package/src/types/allUploader.ts +28 -28
- package/src/types/csv-parser.ts +58 -58
- package/src/types/interfaces.ts +58 -58
- package/src/types/option-set-hierarchy-exporter.ts +124 -124
- package/src/types/option-set-hierarchy-parser.ts +168 -168
- package/src/types/option-set-hierarchy-uploader.ts +121 -121
- package/src/types/option-set-merger.ts +123 -122
- package/src/types/option-set-parser.ts +165 -59
- package/src/types/option-set-uploader.ts +107 -107
- package/src/types/parse-types.ts +226 -226
- package/src/types/rule-set-uploader.ts +186 -186
- package/src/types/type-property-policy-uploader.ts +191 -191
- package/src/types/types-extractor.ts +368 -368
- package/src/types/types-properties-merger.ts +89 -89
- package/src/types/types-uploader.ts +271 -271
- package/src/types/usage-info-uploader.ts +138 -138
- package/src/users/user-exporter.ts +52 -0
- package/src/users/user-uploader.ts +58 -0
- package/src/workflow-template-definitions/workflow-template-definition-commands.ts +12 -12
- package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +184 -184
- package/src/workflow-templates/local-workflow-template-deployer.ts +125 -125
- package/src/workflow-templates/workflow-template-commands.ts +59 -59
- package/src/workflow-templates/workflow-template-deployer.ts +29 -29
- package/templates/docker_deploy.bat +1 -0
- package/templates/javascript/actions/example/action.js +37 -37
- package/templates/javascript/app.yml +52 -52
- package/templates/javascript/package.json +23 -23
- package/templates/typescript/Dockerfile +15 -14
- package/templates/typescript/README.md +10 -10
- package/templates/typescript/app.yml +50 -54
- package/templates/typescript/package-lock.json +14 -14
- package/templates/typescript/package.json +54 -52
- package/templates/typescript/src/actions/logItem.ts +26 -0
- package/templates/typescript/src/framework/action-dispatcher.ts +86 -0
- package/templates/typescript/src/framework/app-config.ts +27 -0
- package/templates/typescript/src/framework/handler.ts +11 -0
- package/templates/typescript/src/framework/index.ts +3 -0
- package/templates/typescript/src/framework/interfaces.ts +32 -0
- package/templates/typescript/src/framework/logger.ts +21 -0
- package/templates/typescript/{actions → src/framework}/mock-server.ts +7 -0
- package/templates/typescript/tsconfig.json +28 -27
- package/tsconfig.json +31 -30
- package/templates/typescript/actions/handler.ts +0 -62
- package/templates/typescript/actions/utils/logger.ts +0 -15
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
import { Entities } from '@contrail/sdk';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { Auth } from '../../auth/auth';
|
|
4
|
-
import { ActionsDeployer, getActionsForApp, deleteAction } from './actions-deployer';
|
|
5
|
-
import { App, AppDeclaration } from '../../interfaces';
|
|
6
|
-
import { TriggerKeyDefinitionParser, ConfigPropertiesParser } from './app-template-parsers';
|
|
7
|
-
import { WorkflowTemplateDefinitionDeployer } from '../../workflow-template-definitions/workflow-template-definition-deployer';
|
|
8
|
-
import { getAllAvailableApps } from '../../api/apps';
|
|
9
|
-
|
|
10
|
-
export class AppDeployer {
|
|
11
|
-
public async deploy(appDeclaration: AppDeclaration) {
|
|
12
|
-
let app = await this.getExistingApp(appDeclaration);
|
|
13
|
-
if (!app) {
|
|
14
|
-
console.log('%s Creating new app.', chalk.yellow.bold('APP'));
|
|
15
|
-
app = await this.createNewApp(appDeclaration);
|
|
16
|
-
} else {
|
|
17
|
-
console.log('%s Updating existing app.', chalk.yellow.bold('APP'));
|
|
18
|
-
app = await this.updateExistingApp(appDeclaration, app);
|
|
19
|
-
}
|
|
20
|
-
await new ActionsDeployer().deployActions(appDeclaration, app);
|
|
21
|
-
await new WorkflowTemplateDefinitionDeployer().deployWorkflowTemplateDefinitions(appDeclaration, app);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public async getExistingApp(appDeclaration: AppDeclaration): Promise<App> {
|
|
25
|
-
const orgId = Auth.config.orgId;
|
|
26
|
-
const apps = await getAllAvailableApps({orgId});
|
|
27
|
-
return apps.find(app => app.identifier === appDeclaration.appIdentifier);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
private async createNewApp(appDeclaration: AppDeclaration) {
|
|
31
|
-
|
|
32
|
-
let configProperties;
|
|
33
|
-
if (appDeclaration?.appConfiguration) {
|
|
34
|
-
configProperties = ConfigPropertiesParser.getConfigProperties(appDeclaration.appConfiguration);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
let triggerKeyDefinitions;
|
|
38
|
-
if (appDeclaration?.triggers) {
|
|
39
|
-
triggerKeyDefinitions = TriggerKeyDefinitionParser.buildTriggersArray(appDeclaration);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const newApp = {
|
|
43
|
-
identifier: appDeclaration.appIdentifier,
|
|
44
|
-
name: appDeclaration.appName,
|
|
45
|
-
public: appDeclaration.visibility === 'public',
|
|
46
|
-
description: appDeclaration.appDescription,
|
|
47
|
-
publisher: appDeclaration.publisher,
|
|
48
|
-
thumbnail: appDeclaration.thumbnail,
|
|
49
|
-
eventWorkflowTriggerKeyMapping: appDeclaration.eventWorkflowTriggerKeyMapping,
|
|
50
|
-
keywords: appDeclaration.keywords,
|
|
51
|
-
configProperties,
|
|
52
|
-
triggerKeyDefinitions,
|
|
53
|
-
dockerImageRef: appDeclaration.dockerImageRef,
|
|
54
|
-
};
|
|
55
|
-
const app = await new Entities().create({ entityName: 'app', object: newApp });
|
|
56
|
-
console.log(`%s Created new app: ${app.name}`, chalk.yellow.bold('APP'));
|
|
57
|
-
return app;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public async updateExistingApp(appDeclaration: AppDeclaration, existingApp) {
|
|
61
|
-
|
|
62
|
-
let configProperties;
|
|
63
|
-
if (appDeclaration?.appConfiguration) {
|
|
64
|
-
configProperties = ConfigPropertiesParser.getConfigProperties(appDeclaration.appConfiguration);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
let triggerKeyDefinitions;
|
|
68
|
-
if (appDeclaration?.triggers) {
|
|
69
|
-
triggerKeyDefinitions = TriggerKeyDefinitionParser.buildTriggersArray(appDeclaration);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const updates = {
|
|
73
|
-
name: appDeclaration.appName,
|
|
74
|
-
public: appDeclaration.visibility === 'public',
|
|
75
|
-
description: appDeclaration.appDescription,
|
|
76
|
-
publisher: appDeclaration.publisher,
|
|
77
|
-
thumbnail: appDeclaration.thumbnail,
|
|
78
|
-
eventWorkflowTriggerKeyMapping: appDeclaration.eventWorkflowTriggerKeyMapping,
|
|
79
|
-
keywords: appDeclaration.keywords,
|
|
80
|
-
configProperties,
|
|
81
|
-
triggerKeyDefinitions,
|
|
82
|
-
dockerImageRef: appDeclaration.dockerImageRef,
|
|
83
|
-
};
|
|
84
|
-
const app = await new Entities().update({ entityName: 'app', id: existingApp.id, object: updates });
|
|
85
|
-
console.log(`%s Updated app: ${app.name}`, chalk.yellow.bold('APP'));
|
|
86
|
-
return app;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
public async remove(appDeclaration: AppDeclaration) {
|
|
90
|
-
let app = await this.getExistingApp(appDeclaration);
|
|
91
|
-
if (app) {
|
|
92
|
-
const actions = await getActionsForApp(app);
|
|
93
|
-
for(const action of actions)
|
|
94
|
-
{
|
|
95
|
-
console.log(`%s Deleting action: ${action.identifier}`, chalk.yellow.bold('APP'));
|
|
96
|
-
await deleteAction(action.id);
|
|
97
|
-
}
|
|
98
|
-
app = await new Entities().delete({ entityName: 'app', id: app.id });
|
|
99
|
-
console.log(`%s Deleted app: ${app.name}`, chalk.yellow.bold('APP'));
|
|
100
|
-
} else {
|
|
101
|
-
throw new Error('App not found.');
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
}
|
|
1
|
+
import { Entities } from '@contrail/sdk';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { Auth } from '../../auth/auth';
|
|
4
|
+
import { ActionsDeployer, getActionsForApp, deleteAction } from './actions-deployer';
|
|
5
|
+
import { App, AppDeclaration } from '../../interfaces';
|
|
6
|
+
import { TriggerKeyDefinitionParser, ConfigPropertiesParser } from './app-template-parsers';
|
|
7
|
+
import { WorkflowTemplateDefinitionDeployer } from '../../workflow-template-definitions/workflow-template-definition-deployer';
|
|
8
|
+
import { getAllAvailableApps } from '../../api/apps';
|
|
9
|
+
|
|
10
|
+
export class AppDeployer {
|
|
11
|
+
public async deploy(appDeclaration: AppDeclaration) {
|
|
12
|
+
let app = await this.getExistingApp(appDeclaration);
|
|
13
|
+
if (!app) {
|
|
14
|
+
console.log('%s Creating new app.', chalk.yellow.bold('APP'));
|
|
15
|
+
app = await this.createNewApp(appDeclaration);
|
|
16
|
+
} else {
|
|
17
|
+
console.log('%s Updating existing app.', chalk.yellow.bold('APP'));
|
|
18
|
+
app = await this.updateExistingApp(appDeclaration, app);
|
|
19
|
+
}
|
|
20
|
+
await new ActionsDeployer().deployActions(appDeclaration, app);
|
|
21
|
+
await new WorkflowTemplateDefinitionDeployer().deployWorkflowTemplateDefinitions(appDeclaration, app);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public async getExistingApp(appDeclaration: AppDeclaration): Promise<App> {
|
|
25
|
+
const orgId = Auth.config.orgId;
|
|
26
|
+
const apps = await getAllAvailableApps({orgId});
|
|
27
|
+
return apps.find(app => app.identifier === appDeclaration.appIdentifier);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private async createNewApp(appDeclaration: AppDeclaration) {
|
|
31
|
+
|
|
32
|
+
let configProperties;
|
|
33
|
+
if (appDeclaration?.appConfiguration) {
|
|
34
|
+
configProperties = ConfigPropertiesParser.getConfigProperties(appDeclaration.appConfiguration);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let triggerKeyDefinitions;
|
|
38
|
+
if (appDeclaration?.triggers) {
|
|
39
|
+
triggerKeyDefinitions = TriggerKeyDefinitionParser.buildTriggersArray(appDeclaration);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const newApp = {
|
|
43
|
+
identifier: appDeclaration.appIdentifier,
|
|
44
|
+
name: appDeclaration.appName,
|
|
45
|
+
public: appDeclaration.visibility === 'public',
|
|
46
|
+
description: appDeclaration.appDescription,
|
|
47
|
+
publisher: appDeclaration.publisher,
|
|
48
|
+
thumbnail: appDeclaration.thumbnail,
|
|
49
|
+
eventWorkflowTriggerKeyMapping: appDeclaration.eventWorkflowTriggerKeyMapping,
|
|
50
|
+
keywords: appDeclaration.keywords,
|
|
51
|
+
configProperties,
|
|
52
|
+
triggerKeyDefinitions,
|
|
53
|
+
dockerImageRef: appDeclaration.dockerImageRef,
|
|
54
|
+
};
|
|
55
|
+
const app = await new Entities().create({ entityName: 'app', object: newApp });
|
|
56
|
+
console.log(`%s Created new app: ${app.name}`, chalk.yellow.bold('APP'));
|
|
57
|
+
return app;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public async updateExistingApp(appDeclaration: AppDeclaration, existingApp) {
|
|
61
|
+
|
|
62
|
+
let configProperties;
|
|
63
|
+
if (appDeclaration?.appConfiguration) {
|
|
64
|
+
configProperties = ConfigPropertiesParser.getConfigProperties(appDeclaration.appConfiguration);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let triggerKeyDefinitions;
|
|
68
|
+
if (appDeclaration?.triggers) {
|
|
69
|
+
triggerKeyDefinitions = TriggerKeyDefinitionParser.buildTriggersArray(appDeclaration);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const updates = {
|
|
73
|
+
name: appDeclaration.appName,
|
|
74
|
+
public: appDeclaration.visibility === 'public',
|
|
75
|
+
description: appDeclaration.appDescription,
|
|
76
|
+
publisher: appDeclaration.publisher,
|
|
77
|
+
thumbnail: appDeclaration.thumbnail,
|
|
78
|
+
eventWorkflowTriggerKeyMapping: appDeclaration.eventWorkflowTriggerKeyMapping,
|
|
79
|
+
keywords: appDeclaration.keywords,
|
|
80
|
+
configProperties,
|
|
81
|
+
triggerKeyDefinitions,
|
|
82
|
+
dockerImageRef: appDeclaration.dockerImageRef,
|
|
83
|
+
};
|
|
84
|
+
const app = await new Entities().update({ entityName: 'app', id: existingApp.id, object: updates });
|
|
85
|
+
console.log(`%s Updated app: ${app.name}`, chalk.yellow.bold('APP'));
|
|
86
|
+
return app;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
public async remove(appDeclaration: AppDeclaration) {
|
|
90
|
+
let app = await this.getExistingApp(appDeclaration);
|
|
91
|
+
if (app) {
|
|
92
|
+
const actions = await getActionsForApp(app);
|
|
93
|
+
for(const action of actions)
|
|
94
|
+
{
|
|
95
|
+
console.log(`%s Deleting action: ${action.identifier}`, chalk.yellow.bold('APP'));
|
|
96
|
+
await deleteAction(action.id);
|
|
97
|
+
}
|
|
98
|
+
app = await new Entities().delete({ entityName: 'app', id: app.id });
|
|
99
|
+
console.log(`%s Deleted app: ${app.name}`, chalk.yellow.bold('APP'));
|
|
100
|
+
} else {
|
|
101
|
+
throw new Error('App not found.');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { AppDeclaration, TriggerKeyDefinition, ConfigPropertyElements } from '../../interfaces';
|
|
2
|
-
|
|
3
|
-
export class TriggerKeyDefinitionParser {
|
|
4
|
-
public static buildTriggersArray(appDeclaration: AppDeclaration): Array<TriggerKeyDefinition> {
|
|
5
|
-
const triggers: Array<TriggerKeyDefinition> = [];
|
|
6
|
-
|
|
7
|
-
for (const triggerName of Object.keys(appDeclaration.triggers)) {
|
|
8
|
-
const triggerDeclaration = appDeclaration.triggers[triggerName];
|
|
9
|
-
|
|
10
|
-
const triggerDefinition = {
|
|
11
|
-
triggerKey: triggerDeclaration.external ? `${appDeclaration.appIdentifier}:${triggerDeclaration.key}` : triggerDeclaration.key,
|
|
12
|
-
name: triggerDeclaration.name,
|
|
13
|
-
external: triggerDeclaration.external,
|
|
14
|
-
description: triggerDeclaration.description,
|
|
15
|
-
};
|
|
16
|
-
if (!triggerDefinition.triggerKey || !triggerDefinition.name) {
|
|
17
|
-
throw new Error('Illegal trigger declaration: must have key and name');
|
|
18
|
-
}
|
|
19
|
-
triggers.push(triggerDefinition);
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
return triggers;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export class ConfigPropertiesParser {
|
|
27
|
-
public static getConfigProperties(configPropertyElements: ConfigPropertyElements) {
|
|
28
|
-
const appConfiguration = [];
|
|
29
|
-
for (const configKey of Object.keys(configPropertyElements)) {
|
|
30
|
-
const declaration = configPropertyElements[configKey];
|
|
31
|
-
const config: any = {
|
|
32
|
-
label: declaration.label,
|
|
33
|
-
slug: configKey,
|
|
34
|
-
propertyType: declaration.propertyType, // TODO should support options
|
|
35
|
-
dynamic: declaration?.dynamic || false,
|
|
36
|
-
};
|
|
37
|
-
if (declaration.options) {
|
|
38
|
-
config.options = declaration.options;
|
|
39
|
-
}
|
|
40
|
-
appConfiguration.push(config);
|
|
41
|
-
}
|
|
42
|
-
return appConfiguration;
|
|
43
|
-
}
|
|
1
|
+
import { AppDeclaration, TriggerKeyDefinition, ConfigPropertyElements } from '../../interfaces';
|
|
2
|
+
|
|
3
|
+
export class TriggerKeyDefinitionParser {
|
|
4
|
+
public static buildTriggersArray(appDeclaration: AppDeclaration): Array<TriggerKeyDefinition> {
|
|
5
|
+
const triggers: Array<TriggerKeyDefinition> = [];
|
|
6
|
+
|
|
7
|
+
for (const triggerName of Object.keys(appDeclaration.triggers)) {
|
|
8
|
+
const triggerDeclaration = appDeclaration.triggers[triggerName];
|
|
9
|
+
|
|
10
|
+
const triggerDefinition = {
|
|
11
|
+
triggerKey: triggerDeclaration.external ? `${appDeclaration.appIdentifier}:${triggerDeclaration.key}` : triggerDeclaration.key,
|
|
12
|
+
name: triggerDeclaration.name,
|
|
13
|
+
external: triggerDeclaration.external,
|
|
14
|
+
description: triggerDeclaration.description,
|
|
15
|
+
};
|
|
16
|
+
if (!triggerDefinition.triggerKey || !triggerDefinition.name) {
|
|
17
|
+
throw new Error('Illegal trigger declaration: must have key and name');
|
|
18
|
+
}
|
|
19
|
+
triggers.push(triggerDefinition);
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
return triggers;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export class ConfigPropertiesParser {
|
|
27
|
+
public static getConfigProperties(configPropertyElements: ConfigPropertyElements) {
|
|
28
|
+
const appConfiguration = [];
|
|
29
|
+
for (const configKey of Object.keys(configPropertyElements)) {
|
|
30
|
+
const declaration = configPropertyElements[configKey];
|
|
31
|
+
const config: any = {
|
|
32
|
+
label: declaration.label,
|
|
33
|
+
slug: configKey,
|
|
34
|
+
propertyType: declaration.propertyType, // TODO should support options
|
|
35
|
+
dynamic: declaration?.dynamic || false,
|
|
36
|
+
};
|
|
37
|
+
if (declaration.options) {
|
|
38
|
+
config.options = declaration.options;
|
|
39
|
+
}
|
|
40
|
+
appConfiguration.push(config);
|
|
41
|
+
}
|
|
42
|
+
return appConfiguration;
|
|
43
|
+
}
|
|
44
44
|
}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import { authUser } from '../../auth/login';
|
|
4
|
-
import { AppDeployer } from './app-deployer';
|
|
5
|
-
import { AppDeclaration } from '../../interfaces';
|
|
6
|
-
import { getSeparatorByPlatform } from '../../common';
|
|
7
|
-
const yaml = require('js-yaml');
|
|
8
|
-
|
|
9
|
-
function loadAppConfig(){
|
|
10
|
-
const TARGET_DIR = process.cwd();
|
|
11
|
-
try {
|
|
12
|
-
const separator = getSeparatorByPlatform();
|
|
13
|
-
const doc = yaml.load(fs.readFileSync(TARGET_DIR + separator + 'app.yml', 'utf8'));
|
|
14
|
-
console.log(doc);
|
|
15
|
-
return doc;
|
|
16
|
-
} catch (e) {
|
|
17
|
-
throw new Error(`ERROR PARSING YAML: ${e}`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export async function deployApp(args) {
|
|
22
|
-
let appDeclaration: AppDeclaration;
|
|
23
|
-
try {
|
|
24
|
-
appDeclaration = loadAppConfig();
|
|
25
|
-
}
|
|
26
|
-
catch (e) {
|
|
27
|
-
console.log(`%s Application Deployment Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
console.log(`%s Deploying Application. ${appDeclaration.appIdentifier}`, chalk.blue.bold('START'));
|
|
32
|
-
try {
|
|
33
|
-
await authUser();
|
|
34
|
-
await new AppDeployer().deploy(appDeclaration);
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
console.log(`%s Application Deployment Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
console.log('%s Deployment Complete.', chalk.green.bold('COMPLETE'));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export async function removeApp(args) {
|
|
45
|
-
let appDeclaration: AppDeclaration;
|
|
46
|
-
try {
|
|
47
|
-
appDeclaration = loadAppConfig();
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
console.log(`%s Application Removal Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
console.log(`%s Removing Application. ${appDeclaration.appIdentifier}`, chalk.blue.bold('START'));
|
|
55
|
-
|
|
56
|
-
try {
|
|
57
|
-
await authUser();
|
|
58
|
-
await new AppDeployer().remove(appDeclaration);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
console.log(`%s Application Removal Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
console.log('%s Application Removal Complete.', chalk.green.bold('COMPLETE'));
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { authUser } from '../../auth/login';
|
|
4
|
+
import { AppDeployer } from './app-deployer';
|
|
5
|
+
import { AppDeclaration } from '../../interfaces';
|
|
6
|
+
import { getSeparatorByPlatform } from '../../common';
|
|
7
|
+
const yaml = require('js-yaml');
|
|
8
|
+
|
|
9
|
+
function loadAppConfig(){
|
|
10
|
+
const TARGET_DIR = process.cwd();
|
|
11
|
+
try {
|
|
12
|
+
const separator = getSeparatorByPlatform();
|
|
13
|
+
const doc = yaml.load(fs.readFileSync(TARGET_DIR + separator + 'app.yml', 'utf8'));
|
|
14
|
+
console.log(doc);
|
|
15
|
+
return doc;
|
|
16
|
+
} catch (e) {
|
|
17
|
+
throw new Error(`ERROR PARSING YAML: ${e}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export async function deployApp(args) {
|
|
22
|
+
let appDeclaration: AppDeclaration;
|
|
23
|
+
try {
|
|
24
|
+
appDeclaration = loadAppConfig();
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.log(`%s Application Deployment Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
console.log(`%s Deploying Application. ${appDeclaration.appIdentifier}`, chalk.blue.bold('START'));
|
|
32
|
+
try {
|
|
33
|
+
await authUser();
|
|
34
|
+
await new AppDeployer().deploy(appDeclaration);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.log(`%s Application Deployment Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
console.log('%s Deployment Complete.', chalk.green.bold('COMPLETE'));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export async function removeApp(args) {
|
|
45
|
+
let appDeclaration: AppDeclaration;
|
|
46
|
+
try {
|
|
47
|
+
appDeclaration = loadAppConfig();
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
console.log(`%s Application Removal Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
console.log(`%s Removing Application. ${appDeclaration.appIdentifier}`, chalk.blue.bold('START'));
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
await authUser();
|
|
58
|
+
await new AppDeployer().remove(appDeclaration);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
console.log(`%s Application Removal Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
console.log('%s Application Removal Complete.', chalk.green.bold('COMPLETE'));
|
|
66
66
|
}
|