contensis-cli 1.3.1-beta.2 → 1.3.1-beta.4
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/dist/commands/copy.js +1 -1
- package/dist/commands/copy.js.map +2 -2
- package/dist/commands/globalOptions.js +10 -2
- package/dist/commands/globalOptions.js.map +2 -2
- package/dist/commands/import.js +1 -1
- package/dist/commands/import.js.map +2 -2
- package/dist/commands/remove.js +13 -0
- package/dist/commands/remove.js.map +2 -2
- package/dist/localisation/en-GB.js +3 -1
- package/dist/localisation/en-GB.js.map +2 -2
- package/dist/providers/CredentialProvider.js.map +2 -2
- package/dist/providers/SessionCacheProvider.js +18 -0
- package/dist/providers/SessionCacheProvider.js.map +2 -2
- package/dist/services/ContensisCliService.js +24 -0
- package/dist/services/ContensisCliService.js.map +3 -3
- package/dist/shell.js +18 -8
- package/dist/shell.js.map +2 -2
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/copy.ts +2 -0
- package/src/commands/globalOptions.ts +7 -1
- package/src/commands/import.ts +2 -0
- package/src/commands/remove.ts +20 -0
- package/src/localisation/en-GB.ts +5 -1
- package/src/providers/CredentialProvider.ts +2 -2
- package/src/providers/SessionCacheProvider.ts +26 -2
- package/src/services/ContensisCliService.ts +32 -0
- package/src/shell.ts +17 -8
- package/src/version.ts +1 -1
package/dist/shell.js
CHANGED
|
@@ -46,17 +46,18 @@ var import_version = require("./version");
|
|
|
46
46
|
class ContensisShell {
|
|
47
47
|
currentEnvironment;
|
|
48
48
|
emptyInputCounter = 0;
|
|
49
|
+
cache;
|
|
49
50
|
env;
|
|
50
51
|
firstStart = true;
|
|
51
52
|
userId = "";
|
|
52
53
|
log = import_logger.Logger;
|
|
53
54
|
messages = import_en_GB.LogMessages;
|
|
54
55
|
refreshEnvironment = () => {
|
|
55
|
-
const {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.env = environments[currentEnvironment];
|
|
56
|
+
const { cache } = new import_ContensisCliService.default([]);
|
|
57
|
+
this.cache = cache;
|
|
58
|
+
this.currentEnvironment = cache.currentEnvironment || "";
|
|
59
|
+
const environments = cache.environments || {};
|
|
60
|
+
this.env = environments[this.currentEnvironment];
|
|
60
61
|
(0, import_util.Logging)("en-GB").then(({ messages, Log }) => {
|
|
61
62
|
this.log = Log;
|
|
62
63
|
this.messages = messages;
|
|
@@ -138,6 +139,7 @@ class ContensisShell {
|
|
|
138
139
|
await this.contensisPrompt();
|
|
139
140
|
};
|
|
140
141
|
contensisPrompt = async () => {
|
|
142
|
+
var _a;
|
|
141
143
|
const { currentEnvironment, env, log, messages, userId } = this;
|
|
142
144
|
const availableCommands = [
|
|
143
145
|
{
|
|
@@ -146,11 +148,20 @@ class ContensisShell {
|
|
|
146
148
|
}
|
|
147
149
|
},
|
|
148
150
|
"connect",
|
|
151
|
+
...Object.keys(this.cache.environments || {}).map(
|
|
152
|
+
(alias) => `connect ${alias}`
|
|
153
|
+
),
|
|
149
154
|
"list envs",
|
|
155
|
+
"remove env",
|
|
150
156
|
"quit"
|
|
151
157
|
];
|
|
152
158
|
if (currentEnvironment)
|
|
153
|
-
availableCommands.push(
|
|
159
|
+
availableCommands.push(
|
|
160
|
+
"login",
|
|
161
|
+
"list projects",
|
|
162
|
+
"set project",
|
|
163
|
+
...(((_a = this.env) == null ? void 0 : _a.projects) || []).map((project) => `set project ${project}`)
|
|
164
|
+
);
|
|
154
165
|
if (userId)
|
|
155
166
|
availableCommands.push(
|
|
156
167
|
"copy field",
|
|
@@ -254,9 +265,8 @@ class ContensisShell {
|
|
|
254
265
|
ex,
|
|
255
266
|
`Shell ${ex instanceof Error ? ex.toString() : JSON.stringify(ex, null, 2)}`
|
|
256
267
|
);
|
|
257
|
-
} finally {
|
|
258
|
-
return this.contensisPrompt();
|
|
259
268
|
}
|
|
269
|
+
return this.contensisPrompt();
|
|
260
270
|
}
|
|
261
271
|
}).catch((err) => {
|
|
262
272
|
log.error(err.message);
|
package/dist/shell.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/shell.ts"],
|
|
4
|
-
"sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport { split } from 'split-cmd';\nimport commands from './commands';\nimport { LogMessages } from './localisation/en-GB';\nimport CredentialProvider from './providers/CredentialProvider';\nimport { appRootDir } from './providers/file-provider';\nimport ContensisCli, { cliCommand } from './services/ContensisCliService';\nimport { Logging } from './util';\nimport { logError, Logger } from './util/logger';\nimport { LIB_VERSION } from './version';\n\nclass ContensisShell {\n private currentEnvironment!: string;\n private emptyInputCounter: number = 0;\n private env!: EnvironmentCache;\n private firstStart = true;\n private userId: string = '';\n private log = Logger;\n private messages = LogMessages;\n\n private refreshEnvironment = () => {\n // Reload any persisted changes from the disk cache\n const {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,sBAAqB;AACrB,qCAA2B;AAC3B,uBAAsB;AACtB,sBAAqB;AACrB,mBAA4B;AAC5B,gCAA+B;AAC/B,2BAA2B;AAC3B,iCAAyC;AACzC,kBAAwB;AACxB,oBAAiC;AACjC,qBAA4B;AAE5B,MAAM,eAAe;AAAA,EACX;AAAA,EACA,oBAA4B;AAAA,EAC5B;AAAA,EACA,aAAa;AAAA,EACb,SAAiB;AAAA,EACjB,MAAM;AAAA,EACN,WAAW;AAAA,EAEX,qBAAqB,MAAM;AAEjC,UAAM
|
|
4
|
+
"sourcesContent": ["import figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-command-prompt';\nimport { split } from 'split-cmd';\nimport commands from './commands';\nimport { LogMessages } from './localisation/en-GB';\nimport CredentialProvider from './providers/CredentialProvider';\nimport { appRootDir } from './providers/file-provider';\nimport ContensisCli, { cliCommand } from './services/ContensisCliService';\nimport { Logging } from './util';\nimport { logError, Logger } from './util/logger';\nimport { LIB_VERSION } from './version';\n\nclass ContensisShell {\n private currentEnvironment!: string;\n private emptyInputCounter: number = 0;\n private cache!: SessionCache;\n private env!: EnvironmentCache;\n private firstStart = true;\n private userId: string = '';\n private log = Logger;\n private messages = LogMessages;\n\n private refreshEnvironment = () => {\n // Reload any persisted changes from the disk cache\n const { cache } = new ContensisCli([]);\n this.cache = cache; // read the cache to pre-load suggestions\n // console.log(`refreshing env w/${currentEnvironment}`);\n this.currentEnvironment = cache.currentEnvironment || '';\n const environments = cache.environments || {};\n this.env = environments[this.currentEnvironment];\n\n // Reload logging here to support changing language\n Logging('en-GB').then(({ messages, Log }) => {\n this.log = Log;\n this.messages = messages;\n });\n };\n\n constructor() {\n this.refreshEnvironment();\n inquirerPrompt.setConfig({\n history: {\n save: true,\n folder: appRootDir,\n limit: 100,\n blacklist: ['quit'],\n },\n });\n\n const { log, messages } = this;\n\n figlet.text(\n messages.app.contensis(),\n {\n font: 'Block',\n horizontalLayout: 'default',\n verticalLayout: 'default',\n width: process.stdout.columns,\n whitespaceBreak: true,\n },\n (err, data) => {\n if (err) {\n log.error(messages.app.unknownError());\n console.dir(err);\n return;\n }\n console.log(log.successText(data));\n console.log(log.infoText(messages.app.startup(LIB_VERSION)));\n console.log(log.helpText(messages.app.help()));\n\n this.start().catch(ex => log.error(ex));\n }\n );\n }\n\n restart = async () => {\n this.firstStart = false;\n this.log.line(); // add a line so we can see where the shell has been restarted\n await this.start();\n };\n\n start = async () => {\n this.refreshEnvironment();\n this.userId = '';\n const { currentEnvironment, env, log, messages } = this;\n\n if (env?.lastUserId) {\n const [credsErr, credentials] = await new CredentialProvider(\n {\n userId: env.lastUserId,\n alias: currentEnvironment,\n },\n env.passwordFallback\n ).Init();\n if (credsErr && !credentials.current) {\n log.error(credsErr.message);\n }\n if (credentials.current) {\n if (this.firstStart) {\n const token = await cliCommand(['login', env.lastUserId]).Login(\n env.lastUserId,\n {\n promptPassword: false,\n silent: true,\n }\n );\n if (token) {\n this.userId = env.lastUserId;\n if (!env.currentProject) log.warning(messages.projects.tip());\n }\n this.firstStart = false;\n this.refreshEnvironment();\n } else {\n this.userId = env.lastUserId;\n }\n }\n }\n await this.contensisPrompt();\n };\n\n contensisPrompt = async (): Promise<any> => {\n const { currentEnvironment, env, log, messages, userId } = this;\n\n const availableCommands = [\n {\n filter: (str: string) => {\n return str.replace(/ \\[.*$/, '');\n },\n },\n 'connect',\n ...Object.keys(this.cache.environments || {}).map(\n alias => `connect ${alias}`\n ),\n 'list envs',\n 'remove env',\n 'quit',\n ];\n\n if (currentEnvironment)\n availableCommands.push(\n 'login',\n 'list projects',\n 'set project',\n ...(this.env?.projects || []).map(project => `set project ${project}`)\n );\n if (userId)\n availableCommands.push(\n 'copy field',\n 'create key',\n 'create project',\n 'create role',\n 'diff models',\n 'execute block action release',\n 'execute block action makelive',\n 'execute block action rollback',\n 'execute block action markasbroken',\n 'get assets',\n 'get block',\n 'get block logs',\n 'get contenttype',\n 'get component',\n 'get entries',\n 'get nodes',\n 'get model',\n 'get project',\n 'get proxy',\n 'get renderer',\n 'get role',\n 'get token',\n 'get version',\n 'get webhook',\n 'get workflow',\n 'import contenttypes',\n 'import components',\n 'import entries',\n 'import models',\n 'import nodes',\n 'list blocks',\n 'list contenttypes',\n 'list components',\n 'list keys',\n 'list models',\n 'list proxies',\n 'list renderers',\n 'list roles',\n 'list webhooks',\n 'list workflows',\n 'push block',\n 'remove components',\n 'remove contenttypes',\n 'remove key',\n 'remove entries',\n 'remove nodes',\n 'remove role',\n 'set project name',\n 'set project description',\n 'set role name',\n 'set role description',\n 'set role assignments',\n 'set role enabled',\n 'set role permissions'\n );\n\n const prompt = inquirer.createPromptModule();\n prompt.registerPrompt('command', inquirerPrompt);\n return prompt([\n {\n type: 'command',\n name: 'cmd',\n autoCompletion: availableCommands.sort(),\n autocompletePrompt: log.infoText(messages.app.autocomplete()),\n message: `${userId ? `${userId}@` : ''}${currentEnvironment || ''}>`,\n context: 0,\n validate: (val: string) => {\n if (!val) this.emptyInputCounter++;\n if (this.emptyInputCounter > 1)\n console.log(this.log.infoText(this.messages.app.suggestions()));\n if (val) {\n this.emptyInputCounter = 0;\n return true;\n }\n },\n prefix: `${env?.currentProject || log.infoText('contensis')}`,\n short: true,\n },\n ])\n .then(async (answers: { cmd: string }) => {\n if (answers.cmd === 'quit') {\n this.quit();\n } else {\n try {\n if (answers.cmd) {\n const program = commands();\n await program.parseAsync(\n split(answers.cmd).map(e => e.replace(/\\\\\"/g, '\"')),\n // answers.cmd\n // .match(/\"[^\"]+\"|[^\\s]+/g)\n // ?.map(e => e.replace(/\"(.+)\"/, '$1')),\n {\n from: 'user',\n }\n );\n }\n } catch (ex: any) {\n const str = ex.toString();\n if (!str.includes('CommanderError'))\n logError(\n ex,\n `Shell ${\n ex instanceof Error\n ? ex.toString()\n : JSON.stringify(ex, null, 2)\n }`\n );\n }\n return this.contensisPrompt();\n }\n })\n .catch((err: Error) => {\n log.error(err.message);\n this.quit();\n });\n };\n\n quit = (error?: Error) => {\n const { log, messages } = this;\n process.removeAllListeners('exit');\n\n if (error) {\n log.error(error.message);\n process.exit(1);\n } else {\n log.success(messages.app.quit());\n process.exitCode = 0;\n process.exit(0);\n }\n };\n}\n\nlet globalShell: ContensisShell;\n\nexport const shell = () => {\n // Return a benign function for shell().restart() when used in cli context\n // as some commands need to restart the shell to show an updated prompt\n // after successful connect / login / set project\n if (typeof process.argv?.[2] !== 'undefined')\n return {\n quit: ContensisCli.quit,\n restart() {},\n } as any;\n if (!globalShell) globalShell = new ContensisShell();\n return globalShell;\n};\n\nprocess.on('uncaughtException', function (err) {\n // Handle the error safely\n console.log(err);\n});\n\nprocess.on('SIGINT', () => {\n Logger.warning('received SIGINT');\n shell().quit();\n // setTimeout(() => {\n // }, 2000);\n});\n\nprocess.on('SIGTERM', () => {\n Logger.warning('received SIGTERM');\n shell().quit();\n});\n\nprocess.stdin.on('data', key => {\n if ((key as any) == '\\u0003') {\n console.log('');\n Logger.info(`[CTRL]+[C] detected, exiting shell...`);\n shell().quit();\n }\n});\n\n// process.env.http_proxy = 'http://127.0.0.1:8888';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ContensisCli", "inquirerPrompt", "figlet", "CredentialProvider", "inquirer", "commands"]
|
|
7
7
|
}
|
package/dist/version.js
CHANGED
|
@@ -21,7 +21,7 @@ __export(version_exports, {
|
|
|
21
21
|
LIB_VERSION: () => LIB_VERSION
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(version_exports);
|
|
24
|
-
const LIB_VERSION = "1.3.1-beta.
|
|
24
|
+
const LIB_VERSION = "1.3.1-beta.4";
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
LIB_VERSION
|
package/dist/version.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/version.ts"],
|
|
4
|
-
"sourcesContent": ["export const LIB_VERSION = \"1.3.1-beta.
|
|
4
|
+
"sourcesContent": ["export const LIB_VERSION = \"1.3.1-beta.4\";\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "contensis-cli",
|
|
3
|
-
"version": "1.3.1-beta.
|
|
3
|
+
"version": "1.3.1-beta.4",
|
|
4
4
|
"description": "A fully featured Contensis command line interface with a shell UI provides simple and intuitive ways to manage or profile your content in any NodeJS terminal.",
|
|
5
5
|
"repository": "https://github.com/contensis/cli",
|
|
6
6
|
"homepage": "https://github.com/contensis/cli/tree/main/packages/contensis-cli#readme",
|
package/src/commands/copy.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
latest,
|
|
10
10
|
mapContensisOpts,
|
|
11
11
|
noCache,
|
|
12
|
+
noPublish,
|
|
12
13
|
outputDetail,
|
|
13
14
|
saveEntries,
|
|
14
15
|
versionStatus,
|
|
@@ -45,6 +46,7 @@ export const makeCopyCommand = () => {
|
|
|
45
46
|
.addOption(ignoreErrors)
|
|
46
47
|
.addOption(outputDetail)
|
|
47
48
|
.addOption(noCache)
|
|
49
|
+
.addOption(noPublish)
|
|
48
50
|
.option(
|
|
49
51
|
'--search <phrase>',
|
|
50
52
|
'get entries with the search phrase, use quotes for multiple words'
|
|
@@ -49,6 +49,7 @@ export const mapContensisOpts = (opts: any = {}): MigrateRequest => ({
|
|
|
49
49
|
noCache: !opts.cache, // arg is inverted automatically from `--no-cache` to `cache: false`
|
|
50
50
|
includeDefaults: opts.defaults, // arg is inverted automatically from `--no-defaults` to `defaults: false`
|
|
51
51
|
concurrency: opts.concurrency ? Number(opts.concurrency) : undefined,
|
|
52
|
+
noPublish: !opts.publish, // arg is inverted automatically from `--no-publish` to `publish: false`
|
|
52
53
|
});
|
|
53
54
|
|
|
54
55
|
/* Output options */
|
|
@@ -177,7 +178,12 @@ export const concurrency = new Option(
|
|
|
177
178
|
|
|
178
179
|
export const noCache = new Option(
|
|
179
180
|
'--no-cache',
|
|
180
|
-
'
|
|
181
|
+
'ignore internal cache and rebuild all resources from scratch'
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
export const noPublish = new Option(
|
|
185
|
+
'--no-publish',
|
|
186
|
+
'don\'t publish created or updated entries'
|
|
181
187
|
);
|
|
182
188
|
|
|
183
189
|
export const addConnectOptions = (program: Command) =>
|
package/src/commands/import.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
latest,
|
|
11
11
|
mapContensisOpts,
|
|
12
12
|
noCache,
|
|
13
|
+
noPublish,
|
|
13
14
|
outputDetail,
|
|
14
15
|
saveEntries,
|
|
15
16
|
versionStatus,
|
|
@@ -139,6 +140,7 @@ Example call:
|
|
|
139
140
|
.addOption(outputDetail)
|
|
140
141
|
.addOption(ignoreErrors)
|
|
141
142
|
.addOption(noCache)
|
|
143
|
+
.addOption(noPublish)
|
|
142
144
|
.addOption(saveEntries)
|
|
143
145
|
.addHelpText(
|
|
144
146
|
'after',
|
package/src/commands/remove.ts
CHANGED
|
@@ -12,6 +12,26 @@ export const makeRemoveCommand = () => {
|
|
|
12
12
|
.showHelpAfterError(true)
|
|
13
13
|
.exitOverride();
|
|
14
14
|
|
|
15
|
+
remove
|
|
16
|
+
.command('env')
|
|
17
|
+
.description('Remove a previously connected environment from the CLI')
|
|
18
|
+
.argument('<alias>', 'the Contensis Cloud alias to remove')
|
|
19
|
+
.usage('<alias>')
|
|
20
|
+
.addHelpText(
|
|
21
|
+
'after',
|
|
22
|
+
`
|
|
23
|
+
Example call:
|
|
24
|
+
> remove env ludlow-uni-dev
|
|
25
|
+
`
|
|
26
|
+
)
|
|
27
|
+
.action(async (alias: string, opts) => {
|
|
28
|
+
const currentEnvironment = await cliCommand(
|
|
29
|
+
['remove', 'env', alias],
|
|
30
|
+
opts
|
|
31
|
+
).RemoveEnvironment(alias);
|
|
32
|
+
if (!currentEnvironment) await shell().restart();
|
|
33
|
+
});
|
|
34
|
+
|
|
15
35
|
remove
|
|
16
36
|
.command('project')
|
|
17
37
|
.description('remove an entire project')
|
|
@@ -30,7 +30,11 @@ export const LogMessages = {
|
|
|
30
30
|
},
|
|
31
31
|
envs: {
|
|
32
32
|
found: (num: number) =>
|
|
33
|
-
`
|
|
33
|
+
`Environments store found containing ${pl('environment', num, true)}`,
|
|
34
|
+
notFound: (alias: string) =>
|
|
35
|
+
`Environment ${Logger.highlightText(alias)} was not found in session cache`,
|
|
36
|
+
removed: (alias: string) =>
|
|
37
|
+
`Removed environment ${Logger.highlightText(alias)} from session cache`,
|
|
34
38
|
tip: () =>
|
|
35
39
|
`Connect to a Contensis cloud instance using "contensis connect {cms alias}"`,
|
|
36
40
|
},
|
|
@@ -54,12 +54,12 @@ class CredentialProvider {
|
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
Init = async (): Promise<[Error, CredentialProvider]> => {
|
|
57
|
+
Init = async (): Promise<[Error | null, CredentialProvider]> => {
|
|
58
58
|
await this.Import();
|
|
59
59
|
|
|
60
60
|
const [err, stored] = (await to(
|
|
61
61
|
this.keytar.getPassword(this.serviceId, this.userId)
|
|
62
|
-
)) as [Error, string];
|
|
62
|
+
)) as [Error | null, string];
|
|
63
63
|
|
|
64
64
|
if (err && this.passwordFallback) {
|
|
65
65
|
this.current = {
|
|
@@ -29,16 +29,18 @@ class SessionCacheProvider {
|
|
|
29
29
|
} else {
|
|
30
30
|
this.WriteCacheToDisk();
|
|
31
31
|
}
|
|
32
|
-
} catch (ex) {
|
|
32
|
+
} catch (ex: any) {
|
|
33
33
|
// Problem reading or parsing cache file
|
|
34
|
+
Logger.error(ex);
|
|
34
35
|
}
|
|
35
36
|
};
|
|
36
37
|
|
|
37
38
|
private WriteCacheToDisk = () => {
|
|
38
39
|
try {
|
|
39
40
|
fs.writeFileSync(this.localFilePath, JSON.stringify(this.cache, null, 2));
|
|
40
|
-
} catch (ex) {
|
|
41
|
+
} catch (ex: any) {
|
|
41
42
|
// Problem writing session cache to file
|
|
43
|
+
Logger.error(ex);
|
|
42
44
|
}
|
|
43
45
|
};
|
|
44
46
|
|
|
@@ -96,6 +98,28 @@ class SessionCacheProvider {
|
|
|
96
98
|
}
|
|
97
99
|
return this.Get();
|
|
98
100
|
};
|
|
101
|
+
|
|
102
|
+
RemoveEnv = (env: string) => {
|
|
103
|
+
try {
|
|
104
|
+
const environment = this.cache.environments[env || ''];
|
|
105
|
+
if (environment) delete this.cache.environments[env || ''];
|
|
106
|
+
|
|
107
|
+
this.Update({
|
|
108
|
+
currentEnvironment:
|
|
109
|
+
this.cache.currentEnvironment === env
|
|
110
|
+
? ''
|
|
111
|
+
: this.cache.currentEnvironment,
|
|
112
|
+
environments: this.cache.environments,
|
|
113
|
+
});
|
|
114
|
+
} catch (ex: any) {
|
|
115
|
+
// Problem merging cache data for update
|
|
116
|
+
Logger.error(
|
|
117
|
+
`Problem removing environment "${env}" in environments.json`
|
|
118
|
+
);
|
|
119
|
+
Logger.error(ex);
|
|
120
|
+
}
|
|
121
|
+
return this.Get();
|
|
122
|
+
};
|
|
99
123
|
}
|
|
100
124
|
|
|
101
125
|
export default SessionCacheProvider;
|
|
@@ -211,6 +211,38 @@ class ContensisCli {
|
|
|
211
211
|
}
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
+
RemoveEnvironment = async (env: string) => {
|
|
215
|
+
const { log, messages, session } = this;
|
|
216
|
+
const { currentEnvironment, environments = {} } = this.cache;
|
|
217
|
+
const envKeys = Object.keys(environments);
|
|
218
|
+
log.success(messages.envs.found(envKeys.length));
|
|
219
|
+
if (environments[env]) {
|
|
220
|
+
// remove env from cache
|
|
221
|
+
session.RemoveEnv(env);
|
|
222
|
+
// remove credentials
|
|
223
|
+
const lastUserId = environments[env].lastUserId;
|
|
224
|
+
if (lastUserId) {
|
|
225
|
+
const [err, credentials] = await new CredentialProvider({
|
|
226
|
+
userId: environments[env].lastUserId,
|
|
227
|
+
alias: env,
|
|
228
|
+
}).Init();
|
|
229
|
+
if (!err && credentials) await credentials.Delete();
|
|
230
|
+
}
|
|
231
|
+
log.success(messages.envs.removed(env));
|
|
232
|
+
// support the output and format options - exporting the history for the
|
|
233
|
+
// removed alias
|
|
234
|
+
await this.HandleFormattingAndOutput(environments[env], () => log.line());
|
|
235
|
+
} else {
|
|
236
|
+
log.warning(messages.envs.notFound(env));
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const nextCurrentEnv =
|
|
240
|
+
currentEnvironment === env ? undefined : currentEnvironment;
|
|
241
|
+
if (envKeys.length === 0 || !nextCurrentEnv) log.help(messages.envs.tip());
|
|
242
|
+
|
|
243
|
+
return nextCurrentEnv;
|
|
244
|
+
};
|
|
245
|
+
|
|
214
246
|
Connect = async (environment: string) => {
|
|
215
247
|
const { log, messages, session } = this;
|
|
216
248
|
|
package/src/shell.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { LIB_VERSION } from './version';
|
|
|
14
14
|
class ContensisShell {
|
|
15
15
|
private currentEnvironment!: string;
|
|
16
16
|
private emptyInputCounter: number = 0;
|
|
17
|
+
private cache!: SessionCache;
|
|
17
18
|
private env!: EnvironmentCache;
|
|
18
19
|
private firstStart = true;
|
|
19
20
|
private userId: string = '';
|
|
@@ -22,12 +23,12 @@ class ContensisShell {
|
|
|
22
23
|
|
|
23
24
|
private refreshEnvironment = () => {
|
|
24
25
|
// Reload any persisted changes from the disk cache
|
|
25
|
-
const {
|
|
26
|
-
|
|
27
|
-
} = new ContensisCli([]);
|
|
26
|
+
const { cache } = new ContensisCli([]);
|
|
27
|
+
this.cache = cache; // read the cache to pre-load suggestions
|
|
28
28
|
// console.log(`refreshing env w/${currentEnvironment}`);
|
|
29
|
-
this.currentEnvironment = currentEnvironment;
|
|
30
|
-
|
|
29
|
+
this.currentEnvironment = cache.currentEnvironment || '';
|
|
30
|
+
const environments = cache.environments || {};
|
|
31
|
+
this.env = environments[this.currentEnvironment];
|
|
31
32
|
|
|
32
33
|
// Reload logging here to support changing language
|
|
33
34
|
Logging('en-GB').then(({ messages, Log }) => {
|
|
@@ -128,12 +129,21 @@ class ContensisShell {
|
|
|
128
129
|
},
|
|
129
130
|
},
|
|
130
131
|
'connect',
|
|
132
|
+
...Object.keys(this.cache.environments || {}).map(
|
|
133
|
+
alias => `connect ${alias}`
|
|
134
|
+
),
|
|
131
135
|
'list envs',
|
|
136
|
+
'remove env',
|
|
132
137
|
'quit',
|
|
133
138
|
];
|
|
134
139
|
|
|
135
140
|
if (currentEnvironment)
|
|
136
|
-
availableCommands.push(
|
|
141
|
+
availableCommands.push(
|
|
142
|
+
'login',
|
|
143
|
+
'list projects',
|
|
144
|
+
'set project',
|
|
145
|
+
...(this.env?.projects || []).map(project => `set project ${project}`)
|
|
146
|
+
);
|
|
137
147
|
if (userId)
|
|
138
148
|
availableCommands.push(
|
|
139
149
|
'copy field',
|
|
@@ -243,9 +253,8 @@ class ContensisShell {
|
|
|
243
253
|
: JSON.stringify(ex, null, 2)
|
|
244
254
|
}`
|
|
245
255
|
);
|
|
246
|
-
} finally {
|
|
247
|
-
return this.contensisPrompt();
|
|
248
256
|
}
|
|
257
|
+
return this.contensisPrompt();
|
|
249
258
|
}
|
|
250
259
|
})
|
|
251
260
|
.catch((err: Error) => {
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const LIB_VERSION = "1.3.1-beta.
|
|
1
|
+
export const LIB_VERSION = "1.3.1-beta.4";
|