@contrail/cli 2.1.19 → 2.1.21
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/README.md +311 -105
- package/dist/api/apps.js +15 -15
- package/dist/api/event-workflow-action-definition.d.ts +1 -1
- package/dist/api/event-workflow-action-definition.js +1 -1
- package/dist/api/event-workflow-template-definition.d.ts +4 -3
- package/dist/api/event-workflow-templates.d.ts +5 -4
- package/dist/api/event-workflow-templates.js +2 -2
- package/dist/api/types.d.ts +10 -10
- package/dist/api/users.js +4 -2
- package/dist/auth/login.js +12 -14
- package/dist/commands/app/create.d.ts +2 -2
- package/dist/commands/app/create.js +15 -10
- package/dist/commands/app/delete.d.ts +2 -2
- package/dist/commands/app/delete.js +4 -2
- package/dist/commands/app/getApiKey.d.ts +2 -2
- package/dist/commands/app/getApiKey.js +17 -11
- package/dist/commands/app/install.d.ts +2 -2
- package/dist/commands/app/install.js +42 -25
- package/dist/commands/app/publish.d.ts +2 -2
- package/dist/commands/app/publish.js +26 -11
- package/dist/commands/app/uninstall.d.ts +2 -2
- package/dist/commands/app/uninstall.js +20 -11
- package/dist/commands/app/upgrade.d.ts +2 -2
- package/dist/commands/app/upgrade.js +46 -23
- package/dist/commands/basecommand.d.ts +7 -0
- package/dist/commands/basecommand.js +29 -0
- package/dist/commands/colors/deleteAll.d.ts +2 -2
- package/dist/commands/colors/deleteAll.js +8 -5
- package/dist/commands/colors/load.d.ts +2 -2
- package/dist/commands/colors/load.js +10 -7
- package/dist/commands/config/list.d.ts +2 -2
- package/dist/commands/config/list.js +4 -2
- package/dist/commands/config/remove.d.ts +2 -2
- package/dist/commands/config/remove.js +4 -2
- package/dist/commands/config/set.d.ts +3 -2
- package/dist/commands/config/set.js +21 -7
- package/dist/commands/groups/export.d.ts +2 -2
- package/dist/commands/groups/export.js +20 -8
- package/dist/commands/groups/upload.d.ts +3 -3
- package/dist/commands/groups/upload.js +44 -32
- package/dist/commands/instance/export.d.ts +2 -2
- package/dist/commands/instance/export.js +15 -3
- package/dist/commands/instance/import.d.ts +2 -2
- package/dist/commands/instance/import.js +9 -2
- package/dist/commands/loader-process/load.d.ts +2 -2
- package/dist/commands/loader-process/load.js +13 -6
- package/dist/commands/loader-process/upload-and-load.d.ts +2 -2
- package/dist/commands/loader-process/upload-and-load.js +18 -7
- package/dist/commands/projects/export.d.ts +2 -2
- package/dist/commands/projects/export.js +4 -2
- package/dist/commands/projects/list.d.ts +2 -2
- package/dist/commands/projects/list.js +6 -4
- package/dist/commands/projects/load.d.ts +2 -2
- package/dist/commands/projects/load.js +16 -8
- package/dist/commands/types/exportOptionSetHierarchies.d.ts +2 -2
- package/dist/commands/types/exportOptionSetHierarchies.js +15 -12
- package/dist/commands/types/getAll.d.ts +2 -2
- package/dist/commands/types/getAll.js +107 -76
- package/dist/commands/types/loadAll.d.ts +2 -2
- package/dist/commands/types/loadAll.js +12 -4
- package/dist/commands/types/mergeOptionSets.d.ts +2 -2
- package/dist/commands/types/mergeOptionSets.js +13 -10
- package/dist/commands/types/mergeTypeProperties.d.ts +2 -2
- package/dist/commands/types/mergeTypeProperties.js +12 -9
- package/dist/commands/types/parseOptionSetsHierarchyLocalFile.d.ts +2 -2
- package/dist/commands/types/parseOptionSetsHierarchyLocalFile.js +19 -15
- package/dist/commands/types/parseOptionSetsHierarchyValuesToKeysLocalFile.d.ts +10 -0
- package/dist/commands/types/parseOptionSetsHierarchyValuesToKeysLocalFile.js +102 -0
- package/dist/commands/types/parseOptionSetsLocalFiles.d.ts +2 -2
- package/dist/commands/types/parseOptionSetsLocalFiles.js +21 -21
- package/dist/commands/types/parseOptionSetsToFolderStructure.d.ts +2 -2
- package/dist/commands/types/parseOptionSetsToFolderStructure.js +17 -18
- package/dist/commands/types/parseTypesFromFiles.d.ts +2 -2
- package/dist/commands/types/parseTypesFromFiles.js +14 -8
- package/dist/commands/types/parseTypesFromLocalFiles.d.ts +2 -2
- package/dist/commands/types/parseTypesFromLocalFiles.js +10 -7
- package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.d.ts +2 -2
- package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.js +11 -8
- package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.d.ts +2 -2
- package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.js +11 -8
- package/dist/commands/types/uploadOptionSetHierarchies.d.ts +2 -2
- package/dist/commands/types/uploadOptionSetHierarchies.js +44 -32
- package/dist/commands/types/uploadOptionSets.d.ts +2 -2
- package/dist/commands/types/uploadOptionSets.js +21 -13
- package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.d.ts +2 -2
- package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.js +26 -19
- package/dist/commands/types/uploadRuleSets.d.ts +2 -2
- package/dist/commands/types/uploadRuleSets.js +34 -26
- package/dist/commands/types/uploadTypePolicies.d.ts +2 -2
- package/dist/commands/types/uploadTypePolicies.js +37 -29
- package/dist/commands/types/uploadTypePropertyPolicies.d.ts +2 -2
- package/dist/commands/types/uploadTypePropertyPolicies.js +38 -30
- package/dist/commands/types/uploadTypes.d.ts +2 -2
- package/dist/commands/types/uploadTypes.js +10 -4
- package/dist/commands/types/uploadUsageInfo.d.ts +2 -2
- package/dist/commands/types/uploadUsageInfo.js +32 -24
- package/dist/commands/users/export.d.ts +2 -2
- package/dist/commands/users/export.js +15 -4
- package/dist/commands/users/upload.d.ts +2 -2
- package/dist/commands/users/upload.js +6 -4
- package/dist/commands/webhooks/create.d.ts +2 -2
- package/dist/commands/webhooks/create.js +8 -6
- package/dist/commands/webhooks/delete.d.ts +2 -2
- package/dist/commands/webhooks/delete.js +8 -5
- package/dist/commands/webhooks/getWebhookTrigger.d.ts +2 -2
- package/dist/commands/webhooks/getWebhookTrigger.js +10 -9
- package/dist/commands/webhooks/list.d.ts +2 -2
- package/dist/commands/webhooks/list.js +8 -6
- package/dist/commands/workflow-template-definitions/install.d.ts +2 -2
- package/dist/commands/workflow-template-definitions/install.js +4 -2
- package/dist/commands/workflow-template-definitions/list.d.ts +2 -2
- package/dist/commands/workflow-template-definitions/list.js +4 -2
- package/dist/commands/workflow-templates/delete.d.ts +2 -2
- package/dist/commands/workflow-templates/delete.js +4 -2
- package/dist/commands/workflow-templates/export.d.ts +2 -2
- package/dist/commands/workflow-templates/export.js +19 -17
- package/dist/commands/workflow-templates/list.d.ts +2 -2
- package/dist/commands/workflow-templates/list.js +4 -2
- package/dist/commands/workflow-templates/load.d.ts +2 -2
- package/dist/commands/workflow-templates/load.js +8 -3
- package/dist/common.d.ts +4 -1
- package/dist/common.js +10 -1
- package/dist/helpers/app/actions-deployer.d.ts +2 -2
- package/dist/helpers/app/actions-deployer.js +12 -7
- package/dist/helpers/app/app-deployer.d.ts +1 -1
- package/dist/helpers/app/app-deployer.js +77 -49
- package/dist/helpers/app/app-template-parsers.js +3 -1
- package/dist/helpers/app/load-app-config.d.ts +2 -1
- package/dist/helpers/app/load-app-config.js +2 -2
- package/dist/helpers/app/setup-template.js +4 -3
- package/dist/helpers/colors/helpers.d.ts +10 -2
- package/dist/helpers/colors/helpers.js +11 -10
- package/dist/helpers/config/config.js +15 -10
- package/dist/helpers/file-helpers.js +7 -4
- package/dist/helpers/loader-process/helpers.js +14 -13
- package/dist/helpers/projects/helpers.d.ts +2 -1
- package/dist/helpers/projects/helpers.js +16 -15
- package/dist/helpers/types/csv-parser.js +17 -14
- package/dist/helpers/types/type-extractor.d.ts +1 -1
- package/dist/helpers/types/type-extractor.js +3 -2
- package/dist/helpers/types/type-parser.js +22 -21
- package/dist/helpers/types/type-uploader.js +19 -15
- package/dist/helpers/workflow-template-definitions/workflow-template-definition-deployer.d.ts +1 -1
- package/dist/helpers/workflow-template-definitions/workflow-template-definition-deployer.js +46 -28
- package/dist/helpers/workflow-templates/helper.d.ts +3 -3
- package/dist/helpers/workflow-templates/helper.js +33 -23
- package/dist/interface-converters.spec.js +15 -15
- package/dist/interfaces.d.ts +6 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.js +32 -0
- package/dist/templates/typescript/src/actions/logItem.ts +9 -4
- package/dist/templates/typescript/src/main.ts +13 -8
- package/oclif.manifest.json +861 -31
- package/package.json +10 -7
|
@@ -8,37 +8,40 @@ const load_app_config_1 = require("../../helpers/app/load-app-config");
|
|
|
8
8
|
const app_deployer_1 = require("../../helpers/app/app-deployer");
|
|
9
9
|
const apps_1 = require("../../api/apps");
|
|
10
10
|
const upgrade_1 = require("./upgrade");
|
|
11
|
-
|
|
11
|
+
const basecommand_1 = require("../basecommand");
|
|
12
|
+
const logger_1 = tslib_1.__importDefault(require("../../logger"));
|
|
13
|
+
class PublishApp extends basecommand_1.BaseCommand {
|
|
12
14
|
async run() {
|
|
13
15
|
const { flags } = await this.parse(PublishApp);
|
|
16
|
+
await super.setLogLevel(flags.logLevel);
|
|
14
17
|
let appDeclaration;
|
|
15
18
|
try {
|
|
16
19
|
appDeclaration = (0, load_app_config_1.loadAppConfig)();
|
|
17
20
|
}
|
|
18
21
|
catch (e) {
|
|
19
|
-
|
|
22
|
+
logger_1.default.info(`%s Application Deployment Failed. ${e}`, chalk_1.default.red.bold('FAIL'));
|
|
20
23
|
return;
|
|
21
24
|
}
|
|
22
|
-
|
|
25
|
+
logger_1.default.info(`%s Deploying Application. ${appDeclaration.appIdentifier}`, chalk_1.default.blue.bold('START'));
|
|
23
26
|
try {
|
|
24
27
|
await (0, login_1.authUser)();
|
|
25
28
|
const app = await new app_deployer_1.AppDeployer(flags.verbose, flags.dryRun).deploy(appDeclaration);
|
|
26
29
|
if (flags.upgrade) {
|
|
27
30
|
const installedApps = await (0, apps_1.getInstalledApps)();
|
|
28
|
-
const installedAppOrg = installedApps.find(x => x.appId === app.id);
|
|
31
|
+
const installedAppOrg = installedApps.find((x) => x.appId === app.id);
|
|
29
32
|
if (!installedAppOrg) {
|
|
30
|
-
|
|
33
|
+
logger_1.default.info('The app you published is not installed in your org');
|
|
31
34
|
return;
|
|
32
35
|
}
|
|
33
36
|
await (0, upgrade_1.upgradeAndWait)(installedAppOrg, app.latestAppVersionId);
|
|
34
|
-
|
|
37
|
+
logger_1.default.info('%s App upgraded.', chalk_1.default.green.bold('UPGRADED'));
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
40
|
catch (e) {
|
|
38
|
-
|
|
41
|
+
logger_1.default.info(`%s Application Deployment Failed. ${e}`, chalk_1.default.red.bold('FAIL'));
|
|
39
42
|
return;
|
|
40
43
|
}
|
|
41
|
-
|
|
44
|
+
logger_1.default.info('%s Deployment Complete.', chalk_1.default.green.bold('COMPLETE'));
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
47
|
exports.default = PublishApp;
|
|
@@ -50,7 +53,19 @@ PublishApp.examples = [
|
|
|
50
53
|
// variable argument length
|
|
51
54
|
PublishApp.strict = true;
|
|
52
55
|
PublishApp.flags = {
|
|
53
|
-
upgrade: core_1.Flags.boolean({
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
upgrade: core_1.Flags.boolean({
|
|
57
|
+
char: 'u',
|
|
58
|
+
description: 'In addition to deploying, upgrade the installed version of the app in this org to the latest one.',
|
|
59
|
+
required: false,
|
|
60
|
+
}),
|
|
61
|
+
verbose: core_1.Flags.boolean({
|
|
62
|
+
char: 'v',
|
|
63
|
+
description: 'Debug the app deployment step and do not remove the intermediate build artifacts.',
|
|
64
|
+
required: false,
|
|
65
|
+
}),
|
|
66
|
+
dryRun: core_1.Flags.boolean({
|
|
67
|
+
char: 'd',
|
|
68
|
+
description: 'Dry run the upgrade without actually updating the app.',
|
|
69
|
+
required: false,
|
|
70
|
+
}),
|
|
56
71
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class UninstallApp extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class UninstallApp extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static strict: boolean;
|
|
@@ -7,21 +7,26 @@ const core_1 = require("@oclif/core");
|
|
|
7
7
|
const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
|
|
8
8
|
const sdk_1 = require("@contrail/sdk");
|
|
9
9
|
const apps_1 = require("../../api/apps");
|
|
10
|
-
|
|
10
|
+
const basecommand_1 = require("../basecommand");
|
|
11
|
+
const common_1 = require("../../common");
|
|
12
|
+
class UninstallApp extends basecommand_1.BaseCommand {
|
|
11
13
|
async run() {
|
|
12
14
|
const { flags } = await this.parse(UninstallApp);
|
|
15
|
+
await super.setLogLevel(flags.logLevel);
|
|
13
16
|
await (0, login_1.authUser)();
|
|
14
17
|
const installedApps = await (0, apps_1.getInstalledApps)();
|
|
15
18
|
if (!flags.appIdentifier) {
|
|
16
|
-
const answers = await inquirer_1.default.prompt([
|
|
19
|
+
const answers = await inquirer_1.default.prompt([
|
|
20
|
+
{
|
|
17
21
|
type: 'list',
|
|
18
22
|
name: 'appIdentifier',
|
|
19
23
|
message: 'Which app would you like to uninstall?',
|
|
20
|
-
choices: installedApps.map(x => x.app.identifier)
|
|
21
|
-
}
|
|
24
|
+
choices: installedApps.map((x) => x.app.identifier),
|
|
25
|
+
},
|
|
26
|
+
]);
|
|
22
27
|
flags.appIdentifier = answers.appIdentifier;
|
|
23
28
|
}
|
|
24
|
-
const appToDelete = installedApps.find(x => x.app.identifier === flags.appIdentifier);
|
|
29
|
+
const appToDelete = installedApps.find((x) => x.app.identifier === flags.appIdentifier);
|
|
25
30
|
if (!appToDelete) {
|
|
26
31
|
throw new Error(`App ${flags.appIdentifier} not found`);
|
|
27
32
|
}
|
|
@@ -29,9 +34,12 @@ class UninstallApp extends core_1.Command {
|
|
|
29
34
|
await (0, apps_1.deleteAppOrg)(appToDelete.id);
|
|
30
35
|
// eslint-disable-next-line no-constant-condition
|
|
31
36
|
while (true) {
|
|
32
|
-
await delay(1000);
|
|
37
|
+
await (0, common_1.delay)(1000);
|
|
33
38
|
try {
|
|
34
|
-
const appStillDeleting = await new sdk_1.Entities().get({
|
|
39
|
+
const appStillDeleting = await new sdk_1.Entities().get({
|
|
40
|
+
entityName: 'app-org',
|
|
41
|
+
id: appToDelete.id,
|
|
42
|
+
});
|
|
35
43
|
if (!appStillDeleting) {
|
|
36
44
|
break;
|
|
37
45
|
}
|
|
@@ -54,8 +62,9 @@ UninstallApp.examples = [
|
|
|
54
62
|
// variable argument length
|
|
55
63
|
UninstallApp.strict = true;
|
|
56
64
|
UninstallApp.flags = {
|
|
57
|
-
appIdentifier: core_1.Flags.string({
|
|
65
|
+
appIdentifier: core_1.Flags.string({
|
|
66
|
+
char: 'i',
|
|
67
|
+
description: '"The identifier of the app to uninstall. The identifier can be found on the app\'s page in the marketplace."',
|
|
68
|
+
required: false,
|
|
69
|
+
}),
|
|
58
70
|
};
|
|
59
|
-
function delay(ms) {
|
|
60
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
61
|
-
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class UpgradeApp extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class UpgradeApp extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static strict: boolean;
|
|
@@ -8,44 +8,59 @@ const core_1 = require("@oclif/core");
|
|
|
8
8
|
const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
|
|
9
9
|
const sdk_1 = require("@contrail/sdk");
|
|
10
10
|
const apps_1 = require("../../api/apps");
|
|
11
|
-
|
|
11
|
+
const basecommand_1 = require("../basecommand");
|
|
12
|
+
const logger_1 = tslib_1.__importDefault(require("../../logger"));
|
|
13
|
+
const common_1 = require("../../common");
|
|
14
|
+
class UpgradeApp extends basecommand_1.BaseCommand {
|
|
12
15
|
async run() {
|
|
13
16
|
const { flags } = await this.parse(UpgradeApp);
|
|
17
|
+
await super.setLogLevel(flags.logLevel);
|
|
14
18
|
await (0, login_1.authUser)();
|
|
15
19
|
const allApps = await (0, apps_1.getAvailableApps)();
|
|
16
20
|
const installedApps = await (0, apps_1.getInstalledApps)();
|
|
17
21
|
if (!flags.appIdentifier) {
|
|
18
|
-
const answers = await inquirer_1.default.prompt([
|
|
22
|
+
const answers = await inquirer_1.default.prompt([
|
|
23
|
+
{
|
|
19
24
|
type: 'list',
|
|
20
25
|
name: 'appIdentifier',
|
|
21
26
|
message: 'Which app would you like to upgrade?',
|
|
22
|
-
choices: installedApps.map(x => x.app.identifier)
|
|
23
|
-
}
|
|
27
|
+
choices: installedApps.map((x) => x.app.identifier),
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
24
30
|
flags.appIdentifier = answers.appIdentifier;
|
|
25
31
|
}
|
|
26
|
-
const appOrgToUpgrade = installedApps.find(x => x.app.identifier === flags.appIdentifier);
|
|
27
|
-
const appToUpgrade = allApps.find(x => x.identifier === flags.appIdentifier);
|
|
32
|
+
const appOrgToUpgrade = installedApps.find((x) => x.app.identifier === flags.appIdentifier);
|
|
33
|
+
const appToUpgrade = allApps.find((x) => x.identifier === flags.appIdentifier);
|
|
28
34
|
if (!appToUpgrade) {
|
|
29
35
|
throw new Error(`App ${flags.appIdentifier} not found`);
|
|
30
36
|
}
|
|
31
37
|
const versions = await (0, apps_1.getAppVersions)(appToUpgrade);
|
|
32
38
|
let versionToUpgrade;
|
|
33
39
|
if (flags.latest) {
|
|
34
|
-
versionToUpgrade = versions.sort((a, b) => a.createdOn > b.createdOn ? 1 : -1)[0].id;
|
|
40
|
+
versionToUpgrade = versions.sort((a, b) => (a.createdOn > b.createdOn ? 1 : -1))[0].id;
|
|
35
41
|
}
|
|
36
42
|
else {
|
|
37
|
-
const answers = await inquirer_1.default.prompt([
|
|
43
|
+
const answers = await inquirer_1.default.prompt([
|
|
44
|
+
{
|
|
38
45
|
type: 'list',
|
|
39
46
|
name: 'appVersion',
|
|
40
47
|
message: 'Which app version would you like to upgrade to?',
|
|
41
|
-
choices: versions
|
|
48
|
+
choices: versions
|
|
49
|
+
.map((x) => {
|
|
42
50
|
const number = x.versionNumber.toString().padStart(4, '0');
|
|
43
|
-
const name = x.id === appOrgToUpgrade.appVersionId
|
|
51
|
+
const name = x.id === appOrgToUpgrade.appVersionId
|
|
52
|
+
? `${number} - ${x.id} (${x.createdOn}) (${x.appRuntime}) (current)`
|
|
53
|
+
: `${number} - ${x.id} (${x.createdOn}) (${x.appRuntime})`;
|
|
44
54
|
return {
|
|
45
|
-
value: x.id,
|
|
55
|
+
value: x.id,
|
|
56
|
+
name,
|
|
46
57
|
};
|
|
47
|
-
})
|
|
48
|
-
|
|
58
|
+
})
|
|
59
|
+
.sort((x, y) => {
|
|
60
|
+
return x.name > y.name ? -1 : 1;
|
|
61
|
+
}),
|
|
62
|
+
},
|
|
63
|
+
]);
|
|
49
64
|
versionToUpgrade = answers.appVersion;
|
|
50
65
|
}
|
|
51
66
|
this.log(`%s Upgrading app to version ${versionToUpgrade}`, chalk_1.default.green.bold('APP UPGRADE'));
|
|
@@ -61,27 +76,35 @@ UpgradeApp.examples = [
|
|
|
61
76
|
// variable argument length
|
|
62
77
|
UpgradeApp.strict = true;
|
|
63
78
|
UpgradeApp.flags = {
|
|
64
|
-
appIdentifier: core_1.Flags.string({
|
|
65
|
-
|
|
79
|
+
appIdentifier: core_1.Flags.string({
|
|
80
|
+
char: 'i',
|
|
81
|
+
description: 'The appIdentifier of the app to install',
|
|
82
|
+
required: false,
|
|
83
|
+
}),
|
|
84
|
+
latest: core_1.Flags.boolean({
|
|
85
|
+
char: 'l',
|
|
86
|
+
description: 'Upgrade to the latest version of the app',
|
|
87
|
+
required: false,
|
|
88
|
+
}),
|
|
66
89
|
};
|
|
67
90
|
async function upgradeAndWait(appOrgToUpgrade, versionToUpgrade) {
|
|
68
91
|
await (0, apps_1.upgradeAppVersion)(appOrgToUpgrade, versionToUpgrade);
|
|
69
92
|
// eslint-disable-next-line no-constant-condition
|
|
70
93
|
while (true) {
|
|
71
|
-
await delay(1000);
|
|
72
|
-
const appStillUpgrading = await new sdk_1.Entities().get({
|
|
94
|
+
await (0, common_1.delay)(1000);
|
|
95
|
+
const appStillUpgrading = await new sdk_1.Entities().get({
|
|
96
|
+
entityName: 'app-org',
|
|
97
|
+
id: appOrgToUpgrade.id,
|
|
98
|
+
});
|
|
73
99
|
if (appStillUpgrading.status === 'READY') {
|
|
74
|
-
|
|
100
|
+
logger_1.default.info('%s App Upgraded', chalk_1.default.green.bold('APP UPGRADE'));
|
|
75
101
|
return;
|
|
76
102
|
}
|
|
77
103
|
if (appStillUpgrading.status === 'FAILED_INSTALLING') {
|
|
78
|
-
|
|
104
|
+
logger_1.default.info('%s App Upgrade FAILED!', chalk_1.default.red.bold('APP UPGRADE'));
|
|
79
105
|
return;
|
|
80
106
|
}
|
|
81
|
-
|
|
107
|
+
logger_1.default.info('checking app status...');
|
|
82
108
|
}
|
|
83
109
|
}
|
|
84
110
|
exports.upgradeAndWait = upgradeAndWait;
|
|
85
|
-
function delay(ms) {
|
|
86
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
87
|
-
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export declare abstract class BaseCommand extends Command {
|
|
3
|
+
static baseFlags: {
|
|
4
|
+
logLevel: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
5
|
+
};
|
|
6
|
+
setLogLevel(logLevel: string): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseCommand = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const logger_1 = tslib_1.__importDefault(require("../logger"));
|
|
7
|
+
const config_1 = require("../helpers/config/config");
|
|
8
|
+
class BaseCommand extends core_1.Command {
|
|
9
|
+
async setLogLevel(logLevel) {
|
|
10
|
+
if (logLevel) {
|
|
11
|
+
logger_1.default.level = logLevel;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const config = await (0, config_1.readVibeIQConfig)();
|
|
15
|
+
if (config.logLevel) {
|
|
16
|
+
logger_1.default.level = config.logLevel;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.BaseCommand = BaseCommand;
|
|
22
|
+
BaseCommand.baseFlags = {
|
|
23
|
+
logLevel: core_1.Flags.string({
|
|
24
|
+
description: 'The Log Level',
|
|
25
|
+
required: false,
|
|
26
|
+
char: 'l',
|
|
27
|
+
options: ['error', 'warn', 'info', 'debug'],
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class DeleteAllColors extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class DeleteAllColors extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
run(): Promise<void>;
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const core_1 = require("@oclif/core");
|
|
5
4
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
5
|
const login_1 = require("../../auth/login");
|
|
7
6
|
const helpers_1 = require("../../helpers/colors/helpers");
|
|
8
|
-
|
|
7
|
+
const basecommand_1 = require("../basecommand");
|
|
8
|
+
const logger_1 = tslib_1.__importDefault(require("../../logger"));
|
|
9
|
+
class DeleteAllColors extends basecommand_1.BaseCommand {
|
|
9
10
|
async run() {
|
|
11
|
+
const { flags } = await this.parse(DeleteAllColors);
|
|
12
|
+
await super.setLogLevel(flags.logLevel);
|
|
10
13
|
try {
|
|
11
14
|
await (0, login_1.authUser)();
|
|
12
15
|
const colors = await (0, helpers_1.getExistingColors)();
|
|
13
|
-
|
|
16
|
+
logger_1.default.info('Deleting %s colors', colors.length);
|
|
14
17
|
for (const color of colors) {
|
|
15
18
|
await (0, helpers_1.deleteColor)(color);
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
catch (e) {
|
|
19
|
-
|
|
22
|
+
logger_1.default.info(`%s Loading Colors Failed. ${e}`, chalk_1.default.red.bold('FAIL'));
|
|
20
23
|
return;
|
|
21
24
|
}
|
|
22
|
-
|
|
25
|
+
logger_1.default.info('%s Deleting Colors Complete.', chalk_1.default.green.bold('COMPLETE'));
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
exports.default = DeleteAllColors;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class LoadColors extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class LoadColors extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
run(): Promise<void>;
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const core_1 = require("@oclif/core");
|
|
5
4
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
5
|
const login_1 = require("../../auth/login");
|
|
7
6
|
const helpers_1 = require("../../helpers/colors/helpers");
|
|
8
|
-
|
|
7
|
+
const basecommand_1 = require("../basecommand");
|
|
8
|
+
const logger_1 = tslib_1.__importDefault(require("../../logger"));
|
|
9
|
+
class LoadColors extends basecommand_1.BaseCommand {
|
|
9
10
|
async run() {
|
|
11
|
+
const { flags } = await this.parse(LoadColors);
|
|
12
|
+
await super.setLogLevel(flags.logLevel);
|
|
10
13
|
try {
|
|
11
14
|
await (0, login_1.authUser)();
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
logger_1.default.info('%s Getting Existing Colors', chalk_1.default.yellow.bold('COLORS'));
|
|
16
|
+
logger_1.default.info('%s Uploading', chalk_1.default.yellow.bold('COLORS'));
|
|
14
17
|
await (0, helpers_1.uploadColors)();
|
|
15
|
-
|
|
18
|
+
logger_1.default.info('%s Uploaded', chalk_1.default.yellow.bold('COLORS'));
|
|
16
19
|
}
|
|
17
20
|
catch (e) {
|
|
18
|
-
|
|
21
|
+
logger_1.default.info(`%s Loading Colors Failed. ${e}`, chalk_1.default.red.bold('FAIL'));
|
|
19
22
|
return;
|
|
20
23
|
}
|
|
21
|
-
|
|
24
|
+
logger_1.default.info('%s Loading Colors Complete.', chalk_1.default.green.bold('COMPLETE'));
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
27
|
exports.default = LoadColors;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class ListConfig extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class ListConfig extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
run(): Promise<void>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const core_1 = require("@oclif/core");
|
|
4
3
|
const config_1 = require("../../helpers/config/config");
|
|
5
|
-
|
|
4
|
+
const basecommand_1 = require("../basecommand");
|
|
5
|
+
class ListConfig extends basecommand_1.BaseCommand {
|
|
6
6
|
async run() {
|
|
7
|
+
const { flags } = await this.parse(ListConfig);
|
|
8
|
+
await super.setLogLevel(flags.logLevel);
|
|
7
9
|
this.log(await (0, config_1.readVibeIQConfig)());
|
|
8
10
|
}
|
|
9
11
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class RemoveConfig extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class RemoveConfig extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static strict: boolean;
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const core_1 = require("@oclif/core");
|
|
4
4
|
const config_1 = require("../../helpers/config/config");
|
|
5
|
-
|
|
5
|
+
const basecommand_1 = require("../basecommand");
|
|
6
|
+
class RemoveConfig extends basecommand_1.BaseCommand {
|
|
6
7
|
async run() {
|
|
7
|
-
const {
|
|
8
|
+
const { flags } = await this.parse(RemoveConfig);
|
|
9
|
+
await super.setLogLevel(flags.logLevel);
|
|
8
10
|
await (0, config_1.deleteConfigs)(Object.keys(flags));
|
|
9
11
|
}
|
|
10
12
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class SetConfig extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class SetConfig extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
@@ -7,6 +7,7 @@ export default class SetConfig extends Command {
|
|
|
7
7
|
apiGateway: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
8
|
orgId: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
9
|
apiUserToken: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
logLevel: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
11
|
};
|
|
11
12
|
static args: {};
|
|
12
13
|
run(): Promise<void>;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
3
4
|
const core_1 = require("@oclif/core");
|
|
4
5
|
const config_1 = require("../../helpers/config/config");
|
|
5
|
-
|
|
6
|
+
const basecommand_1 = require("../basecommand");
|
|
7
|
+
const logger_1 = tslib_1.__importDefault(require("../../logger"));
|
|
8
|
+
class SetConfig extends basecommand_1.BaseCommand {
|
|
6
9
|
async run() {
|
|
7
10
|
const { flags } = await this.parse(SetConfig);
|
|
11
|
+
await super.setLogLevel(flags.logLevel);
|
|
8
12
|
const config = {};
|
|
9
13
|
for (const [label, obj] of Object.entries(flags)) {
|
|
10
14
|
config[label] = obj;
|
|
11
|
-
|
|
15
|
+
logger_1.default.info(`label: ${label}, obj: ${obj}`);
|
|
12
16
|
}
|
|
13
17
|
await (0, config_1.storeConfig)(config);
|
|
14
18
|
this.log(await (0, config_1.readVibeIQConfig)());
|
|
@@ -16,13 +20,23 @@ class SetConfig extends core_1.Command {
|
|
|
16
20
|
}
|
|
17
21
|
exports.default = SetConfig;
|
|
18
22
|
SetConfig.description = 'Set a variable in the configuration';
|
|
19
|
-
SetConfig.examples = [
|
|
20
|
-
'$ contrail config set --orgId 1234',
|
|
21
|
-
];
|
|
23
|
+
SetConfig.examples = ['$ contrail config set --orgId 1234'];
|
|
22
24
|
SetConfig.flags = {
|
|
23
25
|
orgSlug: core_1.Flags.string({ description: 'The org slug', required: false }),
|
|
24
|
-
apiGateway: core_1.Flags.string({
|
|
26
|
+
apiGateway: core_1.Flags.string({
|
|
27
|
+
description: 'The API Gateway',
|
|
28
|
+
required: false,
|
|
29
|
+
}),
|
|
25
30
|
orgId: core_1.Flags.string({ description: 'The org Id', required: false }),
|
|
26
|
-
apiUserToken: core_1.Flags.string({
|
|
31
|
+
apiUserToken: core_1.Flags.string({
|
|
32
|
+
description: 'The API User Token',
|
|
33
|
+
required: false,
|
|
34
|
+
}),
|
|
35
|
+
logLevel: core_1.Flags.string({
|
|
36
|
+
description: 'The Log Level',
|
|
37
|
+
required: false,
|
|
38
|
+
char: 'l',
|
|
39
|
+
options: ['error', 'warn', 'info', 'debug'],
|
|
40
|
+
}),
|
|
27
41
|
};
|
|
28
42
|
SetConfig.args = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
2
|
export declare const DEFAULT_FILE_LOCATION = "groups.yml";
|
|
3
|
-
export default class ExportGroups extends
|
|
3
|
+
export default class ExportGroups extends BaseCommand {
|
|
4
4
|
static description: string;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
@@ -10,11 +10,14 @@ const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
|
10
10
|
const core_1 = require("@oclif/core");
|
|
11
11
|
const file_helpers_1 = require("../../helpers/file-helpers");
|
|
12
12
|
const users_1 = require("../../api/users");
|
|
13
|
+
const basecommand_1 = require("../basecommand");
|
|
14
|
+
const logger_1 = tslib_1.__importDefault(require("../../logger"));
|
|
13
15
|
exports.DEFAULT_FILE_LOCATION = 'groups.yml';
|
|
14
|
-
class ExportGroups extends
|
|
16
|
+
class ExportGroups extends basecommand_1.BaseCommand {
|
|
15
17
|
async run() {
|
|
16
18
|
var _a;
|
|
17
19
|
const { flags } = await this.parse(ExportGroups);
|
|
20
|
+
await super.setLogLevel(flags.logLevel);
|
|
18
21
|
try {
|
|
19
22
|
await (0, login_1.authUser)();
|
|
20
23
|
this.log('%s Getting Groups.', chalk_1.default.blue.bold('START'));
|
|
@@ -35,8 +38,17 @@ ExportGroups.examples = [
|
|
|
35
38
|
`,
|
|
36
39
|
];
|
|
37
40
|
ExportGroups.flags = {
|
|
38
|
-
outFile: core_1.Flags.string({
|
|
39
|
-
|
|
41
|
+
outFile: core_1.Flags.string({
|
|
42
|
+
char: 'f',
|
|
43
|
+
description: 'The location for the file to be saved',
|
|
44
|
+
required: false,
|
|
45
|
+
default: exports.DEFAULT_FILE_LOCATION,
|
|
46
|
+
}),
|
|
47
|
+
overwrite: core_1.Flags.boolean({
|
|
48
|
+
description: 'Replaces existing files if they exist',
|
|
49
|
+
required: false,
|
|
50
|
+
default: false,
|
|
51
|
+
}),
|
|
40
52
|
};
|
|
41
53
|
async function exportGroups(fileLocation, overwrite) {
|
|
42
54
|
const allGroups = await (0, users_1.getGroups)({ relations: ['groupPrincipals'] });
|
|
@@ -70,22 +82,22 @@ function getGroupPrincipals(group, allGroups, orgUsers) {
|
|
|
70
82
|
for (const principal of group.groupPrincipals) {
|
|
71
83
|
const [type, id] = principal.principalReference.split(':');
|
|
72
84
|
if (type === 'user') {
|
|
73
|
-
const user = orgUsers.find(x => x.user.id === id);
|
|
85
|
+
const user = orgUsers.find((x) => x.user.id === id);
|
|
74
86
|
if (user) {
|
|
75
87
|
principals.push({
|
|
76
88
|
type,
|
|
77
|
-
email: user.user.email
|
|
89
|
+
email: user.user.email,
|
|
78
90
|
});
|
|
79
91
|
}
|
|
80
92
|
else {
|
|
81
|
-
|
|
93
|
+
logger_1.default.info('"couldn\'t find user"', id);
|
|
82
94
|
}
|
|
83
95
|
}
|
|
84
96
|
else if (type === 'group') {
|
|
85
|
-
const nestedGroup = allGroups.find(x => x.id === id);
|
|
97
|
+
const nestedGroup = allGroups.find((x) => x.id === id);
|
|
86
98
|
principals.push({
|
|
87
99
|
type: 'group',
|
|
88
|
-
name: nestedGroup.name
|
|
100
|
+
name: nestedGroup.name,
|
|
89
101
|
});
|
|
90
102
|
}
|
|
91
103
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class ImportGroups extends
|
|
1
|
+
import { BaseCommand } from '../basecommand';
|
|
2
|
+
export default class ImportGroups extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static args: {
|
|
@@ -7,4 +7,4 @@ export default class ImportGroups extends Command {
|
|
|
7
7
|
};
|
|
8
8
|
run(): Promise<void>;
|
|
9
9
|
}
|
|
10
|
-
export declare function uploadGroups(fileLocation: string): Promise<
|
|
10
|
+
export declare function uploadGroups(fileLocation: string): Promise<any>;
|