@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,2 +1,2 @@
|
|
|
1
|
-
export declare function deleteColors(): Promise<void>;
|
|
2
|
-
export declare function loadColors(): Promise<void>;
|
|
1
|
+
export declare function deleteColors(): Promise<void>;
|
|
2
|
+
export declare function loadColors(): Promise<void>;
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
import { Entities } from '@contrail/sdk';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { authUser } from '../auth/login';
|
|
4
|
-
import { getSeparatorByPlatform } from '../common';
|
|
5
|
-
const csv = require('csvtojson');
|
|
6
|
-
export async function deleteColors() {
|
|
7
|
-
try {
|
|
8
|
-
await authUser();
|
|
9
|
-
const colors = await getExistingColors();
|
|
10
|
-
console.log('Deleting %s colors', colors.length);
|
|
11
|
-
for (const color of colors) {
|
|
12
|
-
await deleteColor(color);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
catch (e) {
|
|
16
|
-
console.log(`%s Loading Colors Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
console.log('%s Deleting Colors Complete.', chalk.green.bold('COMPLETE'));
|
|
20
|
-
}
|
|
21
|
-
export async function loadColors() {
|
|
22
|
-
try {
|
|
23
|
-
await authUser();
|
|
24
|
-
console.log('%s Getting Existing Colors', chalk.yellow.bold('COLORS'));
|
|
25
|
-
console.log('%s Uploading', chalk.yellow.bold('COLORS'));
|
|
26
|
-
await uploadColors();
|
|
27
|
-
console.log('%s Uploaded', chalk.yellow.bold('COLORS'));
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
console.log(`%s Loading Colors Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
console.log('%s Loading Colors Complete.', chalk.green.bold('COMPLETE'));
|
|
34
|
-
}
|
|
35
|
-
async function getLocalColors() {
|
|
36
|
-
console.log('loading colors from local file');
|
|
37
|
-
const TARGET_DIR = process.cwd();
|
|
38
|
-
try {
|
|
39
|
-
const separator = getSeparatorByPlatform();
|
|
40
|
-
const csvFilePath = TARGET_DIR + separator + 'colors.csv';
|
|
41
|
-
return await csv().fromFile(csvFilePath);
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
throw new Error(`ERROR PARSING COLORS CSV: ${e}`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
async function getExistingColors() {
|
|
48
|
-
console.log('%s Getting Existing Colors', chalk.yellow.bold('COLORS'));
|
|
49
|
-
try {
|
|
50
|
-
const result = await new Entities().get({ entityName: 'color', take: 3000 }); //, useSearch: false }); Not in EntitiesClientGetOptions yet
|
|
51
|
-
console.log('Found %s existing colors', result.length);
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
throw new Error(`ERROR DOWNLOADING COLORS: ${e}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async function deleteColor(color) {
|
|
59
|
-
try {
|
|
60
|
-
await new Entities().delete({ entityName: 'color', id: color.id });
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
throw new Error(`ERROR DOWNLOADING COLORS: ${e}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
async function uploadColors() {
|
|
67
|
-
const colors = await getLocalColors();
|
|
68
|
-
const existingColors = await getExistingColors();
|
|
69
|
-
const existingNamesValues = existingColors.filter(x => x.name).map(x => x.name);
|
|
70
|
-
for (const color of colors) {
|
|
71
|
-
if (existingNamesValues.includes(color.name)) {
|
|
72
|
-
console.log('%s SKIPPING %s (%s)', chalk.yellow.bold('COLORS'), color.hex, color.name);
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (color.hex.length > 1 && color.hex[0] === '#') {
|
|
76
|
-
color.hex = color.hex.substring(1);
|
|
77
|
-
}
|
|
78
|
-
const o = {
|
|
79
|
-
hex: color.hex,
|
|
80
|
-
name: color.name
|
|
81
|
-
};
|
|
82
|
-
if (color.red) {
|
|
83
|
-
o.red = color.red;
|
|
84
|
-
}
|
|
85
|
-
if (color.green) {
|
|
86
|
-
o.green = color.green;
|
|
87
|
-
}
|
|
88
|
-
if (color.blue) {
|
|
89
|
-
o.blue = color.blue;
|
|
90
|
-
}
|
|
91
|
-
await new Entities().create({
|
|
92
|
-
entityName: 'color',
|
|
93
|
-
object: o
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
1
|
+
import { Entities } from '@contrail/sdk';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { authUser } from '../auth/login';
|
|
4
|
+
import { getSeparatorByPlatform } from '../common';
|
|
5
|
+
const csv = require('csvtojson');
|
|
6
|
+
export async function deleteColors() {
|
|
7
|
+
try {
|
|
8
|
+
await authUser();
|
|
9
|
+
const colors = await getExistingColors();
|
|
10
|
+
console.log('Deleting %s colors', colors.length);
|
|
11
|
+
for (const color of colors) {
|
|
12
|
+
await deleteColor(color);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
console.log(`%s Loading Colors Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('%s Deleting Colors Complete.', chalk.green.bold('COMPLETE'));
|
|
20
|
+
}
|
|
21
|
+
export async function loadColors() {
|
|
22
|
+
try {
|
|
23
|
+
await authUser();
|
|
24
|
+
console.log('%s Getting Existing Colors', chalk.yellow.bold('COLORS'));
|
|
25
|
+
console.log('%s Uploading', chalk.yellow.bold('COLORS'));
|
|
26
|
+
await uploadColors();
|
|
27
|
+
console.log('%s Uploaded', chalk.yellow.bold('COLORS'));
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.log(`%s Loading Colors Failed. ${e}`, chalk.red.bold('FAIL'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log('%s Loading Colors Complete.', chalk.green.bold('COMPLETE'));
|
|
34
|
+
}
|
|
35
|
+
async function getLocalColors() {
|
|
36
|
+
console.log('loading colors from local file');
|
|
37
|
+
const TARGET_DIR = process.cwd();
|
|
38
|
+
try {
|
|
39
|
+
const separator = getSeparatorByPlatform();
|
|
40
|
+
const csvFilePath = TARGET_DIR + separator + 'colors.csv';
|
|
41
|
+
return await csv().fromFile(csvFilePath);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
throw new Error(`ERROR PARSING COLORS CSV: ${e}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function getExistingColors() {
|
|
48
|
+
console.log('%s Getting Existing Colors', chalk.yellow.bold('COLORS'));
|
|
49
|
+
try {
|
|
50
|
+
const result = await new Entities().get({ entityName: 'color', take: 3000 }); //, useSearch: false }); Not in EntitiesClientGetOptions yet
|
|
51
|
+
console.log('Found %s existing colors', result.length);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
throw new Error(`ERROR DOWNLOADING COLORS: ${e}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function deleteColor(color) {
|
|
59
|
+
try {
|
|
60
|
+
await new Entities().delete({ entityName: 'color', id: color.id });
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
throw new Error(`ERROR DOWNLOADING COLORS: ${e}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function uploadColors() {
|
|
67
|
+
const colors = await getLocalColors();
|
|
68
|
+
const existingColors = await getExistingColors();
|
|
69
|
+
const existingNamesValues = existingColors.filter(x => x.name).map(x => x.name);
|
|
70
|
+
for (const color of colors) {
|
|
71
|
+
if (existingNamesValues.includes(color.name)) {
|
|
72
|
+
console.log('%s SKIPPING %s (%s)', chalk.yellow.bold('COLORS'), color.hex, color.name);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (color.hex.length > 1 && color.hex[0] === '#') {
|
|
76
|
+
color.hex = color.hex.substring(1);
|
|
77
|
+
}
|
|
78
|
+
const o = {
|
|
79
|
+
hex: color.hex,
|
|
80
|
+
name: color.name
|
|
81
|
+
};
|
|
82
|
+
if (color.red) {
|
|
83
|
+
o.red = color.red;
|
|
84
|
+
}
|
|
85
|
+
if (color.green) {
|
|
86
|
+
o.green = color.green;
|
|
87
|
+
}
|
|
88
|
+
if (color.blue) {
|
|
89
|
+
o.blue = color.blue;
|
|
90
|
+
}
|
|
91
|
+
await new Entities().create({
|
|
92
|
+
entityName: 'color',
|
|
93
|
+
object: o
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
package/lib/common.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getSeparatorByPlatform(): "\\" | "/";
|
|
1
|
+
export declare function getSeparatorByPlatform(): "\\" | "/";
|
package/lib/common.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export function getSeparatorByPlatform() {
|
|
2
|
-
const isWin = process.platform === 'win32';
|
|
3
|
-
const separator = isWin ? '\\' : '/';
|
|
4
|
-
return separator;
|
|
5
|
-
}
|
|
1
|
+
export function getSeparatorByPlatform() {
|
|
2
|
+
const isWin = process.platform === 'win32';
|
|
3
|
+
const separator = isWin ? '\\' : '/';
|
|
4
|
+
return separator;
|
|
5
|
+
}
|
package/lib/config/config.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare function initializeVibeIQConfig(): Promise<void>;
|
|
2
|
-
export declare function readVibeIQConfig(): Promise<any>;
|
|
3
|
-
export declare function writeVibeIQConfig(config: any): Promise<void>;
|
|
4
|
-
export declare function getConfig(): Promise<any>;
|
|
5
|
-
export declare function deleteConfigs(configNames: string[]): Promise<void>;
|
|
6
|
-
export declare function storeConfig(incomingConfig: any, merge?: boolean): Promise<void>;
|
|
1
|
+
export declare function initializeVibeIQConfig(): Promise<void>;
|
|
2
|
+
export declare function readVibeIQConfig(): Promise<any>;
|
|
3
|
+
export declare function writeVibeIQConfig(config: any): Promise<void>;
|
|
4
|
+
export declare function getConfig(): Promise<any>;
|
|
5
|
+
export declare function deleteConfigs(configNames: string[]): Promise<void>;
|
|
6
|
+
export declare function storeConfig(incomingConfig: any, merge?: boolean): Promise<void>;
|
package/lib/config/config.js
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import { promises as fsPromises } from 'fs';
|
|
2
|
-
import { join } from 'path';
|
|
3
|
-
import { homedir } from 'os';
|
|
4
|
-
const userHomeDir = homedir();
|
|
5
|
-
const configDirectoryLocation = join(userHomeDir, '.vibeiq');
|
|
6
|
-
const configFileLocation = join(configDirectoryLocation, 'config.json');
|
|
7
|
-
export async function initializeVibeIQConfig() {
|
|
8
|
-
try {
|
|
9
|
-
await fsPromises.mkdir(configDirectoryLocation, { recursive: true });
|
|
10
|
-
}
|
|
11
|
-
catch (e) {
|
|
12
|
-
console.error('could not initialize vibeiq directory');
|
|
13
|
-
throw e;
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
await fsPromises.writeFile(configFileLocation, '{}');
|
|
17
|
-
}
|
|
18
|
-
catch (e) {
|
|
19
|
-
console.error(`could not initialize config file (${configFileLocation}).`);
|
|
20
|
-
throw e;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export async function readVibeIQConfig() {
|
|
24
|
-
let fileContent;
|
|
25
|
-
try {
|
|
26
|
-
fileContent = await fsPromises.readFile(configFileLocation);
|
|
27
|
-
}
|
|
28
|
-
catch (e) {
|
|
29
|
-
console.debug(`failed to open config file (${configFileLocation}) for reading.`);
|
|
30
|
-
console.debug('trying to initialize config file');
|
|
31
|
-
await initializeVibeIQConfig();
|
|
32
|
-
fileContent = await fsPromises.readFile(configFileLocation);
|
|
33
|
-
}
|
|
34
|
-
try {
|
|
35
|
-
return JSON.parse(fileContent);
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
console.error(`Could not parse local vibeiq config. The file (${configFileLocation}) might be malformed`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export async function writeVibeIQConfig(config) {
|
|
42
|
-
try {
|
|
43
|
-
await fsPromises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
console.error(`Could not open config file (${configFileLocation}) for writing.`);
|
|
47
|
-
throw e;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
export async function getConfig() {
|
|
51
|
-
console.debug('getting config from file system');
|
|
52
|
-
return await readVibeIQConfig();
|
|
53
|
-
}
|
|
54
|
-
export async function deleteConfigs(configNames) {
|
|
55
|
-
const currentConfig = await readVibeIQConfig();
|
|
56
|
-
for (const configName of configNames) {
|
|
57
|
-
delete currentConfig[configName];
|
|
58
|
-
}
|
|
59
|
-
await storeConfig(currentConfig, false);
|
|
60
|
-
}
|
|
61
|
-
export async function storeConfig(incomingConfig, merge = true) {
|
|
62
|
-
let config;
|
|
63
|
-
if (merge) {
|
|
64
|
-
config = Object.assign(Object.assign({}, await readVibeIQConfig()), incomingConfig);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
config = incomingConfig;
|
|
68
|
-
}
|
|
69
|
-
await writeVibeIQConfig(config);
|
|
70
|
-
}
|
|
1
|
+
import { promises as fsPromises } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
const userHomeDir = homedir();
|
|
5
|
+
const configDirectoryLocation = join(userHomeDir, '.vibeiq');
|
|
6
|
+
const configFileLocation = join(configDirectoryLocation, 'config.json');
|
|
7
|
+
export async function initializeVibeIQConfig() {
|
|
8
|
+
try {
|
|
9
|
+
await fsPromises.mkdir(configDirectoryLocation, { recursive: true });
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
console.error('could not initialize vibeiq directory');
|
|
13
|
+
throw e;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
await fsPromises.writeFile(configFileLocation, '{}');
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
console.error(`could not initialize config file (${configFileLocation}).`);
|
|
20
|
+
throw e;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function readVibeIQConfig() {
|
|
24
|
+
let fileContent;
|
|
25
|
+
try {
|
|
26
|
+
fileContent = await fsPromises.readFile(configFileLocation);
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.debug(`failed to open config file (${configFileLocation}) for reading.`);
|
|
30
|
+
console.debug('trying to initialize config file');
|
|
31
|
+
await initializeVibeIQConfig();
|
|
32
|
+
fileContent = await fsPromises.readFile(configFileLocation);
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
return JSON.parse(fileContent);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
console.error(`Could not parse local vibeiq config. The file (${configFileLocation}) might be malformed`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function writeVibeIQConfig(config) {
|
|
42
|
+
try {
|
|
43
|
+
await fsPromises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
console.error(`Could not open config file (${configFileLocation}) for writing.`);
|
|
47
|
+
throw e;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export async function getConfig() {
|
|
51
|
+
console.debug('getting config from file system');
|
|
52
|
+
return await readVibeIQConfig();
|
|
53
|
+
}
|
|
54
|
+
export async function deleteConfigs(configNames) {
|
|
55
|
+
const currentConfig = await readVibeIQConfig();
|
|
56
|
+
for (const configName of configNames) {
|
|
57
|
+
delete currentConfig[configName];
|
|
58
|
+
}
|
|
59
|
+
await storeConfig(currentConfig, false);
|
|
60
|
+
}
|
|
61
|
+
export async function storeConfig(incomingConfig, merge = true) {
|
|
62
|
+
let config;
|
|
63
|
+
if (merge) {
|
|
64
|
+
config = Object.assign(Object.assign({}, await readVibeIQConfig()), incomingConfig);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
config = incomingConfig;
|
|
68
|
+
}
|
|
69
|
+
await writeVibeIQConfig(config);
|
|
70
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function listConfig(): Promise<void>;
|
|
2
|
-
export declare function setConfig(args: any): Promise<void>;
|
|
3
|
-
export declare function removeConfig(args: any): Promise<void>;
|
|
1
|
+
export declare function listConfig(): Promise<void>;
|
|
2
|
+
export declare function setConfig(args: any): Promise<void>;
|
|
3
|
+
export declare function removeConfig(args: any): Promise<void>;
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { deleteConfigs, readVibeIQConfig, storeConfig } from './config';
|
|
2
|
-
export async function listConfig() {
|
|
3
|
-
console.log(await readVibeIQConfig());
|
|
4
|
-
}
|
|
5
|
-
export async function setConfig(args) {
|
|
6
|
-
const helpConfigLine = `
|
|
7
|
-
Usage:
|
|
8
|
-
contrail config.set key1=value1 key2=value2
|
|
9
|
-
`;
|
|
10
|
-
if ((args === null || args === void 0 ? void 0 : args.length) < 4) {
|
|
11
|
-
console.log(helpConfigLine);
|
|
12
|
-
throw new Error('You need to pass at least one config to set');
|
|
13
|
-
}
|
|
14
|
-
const configsToSet = args.slice(3);
|
|
15
|
-
const config = {};
|
|
16
|
-
for (const conf of configsToSet) {
|
|
17
|
-
if (conf.length < 3 || conf.indexOf('=') <= 0) {
|
|
18
|
-
console.log(helpConfigLine);
|
|
19
|
-
throw new Error(`value ${conf} does not adhere to key1=value1 standard`);
|
|
20
|
-
}
|
|
21
|
-
const [key, value] = conf.split('=');
|
|
22
|
-
console.log('key and value:', key, value);
|
|
23
|
-
console.log(conf.split('='));
|
|
24
|
-
config[key] = value;
|
|
25
|
-
}
|
|
26
|
-
console.log('config is:', config);
|
|
27
|
-
await storeConfig(config);
|
|
28
|
-
}
|
|
29
|
-
export async function removeConfig(args) {
|
|
30
|
-
if ((args === null || args === void 0 ? void 0 : args.length) < 4) {
|
|
31
|
-
throw new Error('At least one configuration must be included to be removed.');
|
|
32
|
-
}
|
|
33
|
-
await deleteConfigs(args.slice(3));
|
|
34
|
-
}
|
|
1
|
+
import { deleteConfigs, readVibeIQConfig, storeConfig } from './config';
|
|
2
|
+
export async function listConfig() {
|
|
3
|
+
console.log(await readVibeIQConfig());
|
|
4
|
+
}
|
|
5
|
+
export async function setConfig(args) {
|
|
6
|
+
const helpConfigLine = `
|
|
7
|
+
Usage:
|
|
8
|
+
contrail config.set key1=value1 key2=value2
|
|
9
|
+
`;
|
|
10
|
+
if ((args === null || args === void 0 ? void 0 : args.length) < 4) {
|
|
11
|
+
console.log(helpConfigLine);
|
|
12
|
+
throw new Error('You need to pass at least one config to set');
|
|
13
|
+
}
|
|
14
|
+
const configsToSet = args.slice(3);
|
|
15
|
+
const config = {};
|
|
16
|
+
for (const conf of configsToSet) {
|
|
17
|
+
if (conf.length < 3 || conf.indexOf('=') <= 0) {
|
|
18
|
+
console.log(helpConfigLine);
|
|
19
|
+
throw new Error(`value ${conf} does not adhere to key1=value1 standard`);
|
|
20
|
+
}
|
|
21
|
+
const [key, value] = conf.split('=');
|
|
22
|
+
console.log('key and value:', key, value);
|
|
23
|
+
console.log(conf.split('='));
|
|
24
|
+
config[key] = value;
|
|
25
|
+
}
|
|
26
|
+
console.log('config is:', config);
|
|
27
|
+
await storeConfig(config);
|
|
28
|
+
}
|
|
29
|
+
export async function removeConfig(args) {
|
|
30
|
+
if ((args === null || args === void 0 ? void 0 : args.length) < 4) {
|
|
31
|
+
throw new Error('At least one configuration must be included to be removed.');
|
|
32
|
+
}
|
|
33
|
+
await deleteConfigs(args.slice(3));
|
|
34
|
+
}
|