@camunda8/cli 2.0.0-alpha.2 → 2.0.0-alpha.3
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 +97 -22
- package/dist/commands/completion.d.ts +8 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +596 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/deployments.d.ts.map +1 -1
- package/dist/commands/deployments.js +2 -1
- package/dist/commands/deployments.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +23 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/process-definitions.d.ts +17 -0
- package/dist/commands/process-definitions.d.ts.map +1 -0
- package/dist/commands/process-definitions.js +61 -0
- package/dist/commands/process-definitions.js.map +1 -0
- package/dist/commands/profiles.d.ts +17 -8
- package/dist/commands/profiles.d.ts.map +1 -1
- package/dist/commands/profiles.js +74 -35
- package/dist/commands/profiles.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +7 -7
- package/dist/commands/session.js.map +1 -1
- package/dist/config.d.ts +109 -52
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +350 -179
- package/dist/config.js.map +1 -1
- package/dist/index.js +35 -6
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +1 -2
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +20 -14
- package/dist/logger.js.map +1 -1
- package/dist/plugin-loader.d.ts +9 -0
- package/dist/plugin-loader.d.ts.map +1 -1
- package/dist/plugin-loader.js +82 -23
- package/dist/plugin-loader.js.map +1 -1
- package/dist/runtime.d.ts +18 -5
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +31 -6
- package/dist/runtime.js.map +1 -1
- package/package.json +12 -12
package/dist/commands/help.js
CHANGED
|
@@ -5,6 +5,7 @@ import { readFileSync } from 'node:fs';
|
|
|
5
5
|
import { join, dirname } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { getLogger } from "../logger.js";
|
|
8
|
+
import { getPluginCommandsInfo } from "../plugin-loader.js";
|
|
8
9
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
10
|
const __dirname = dirname(__filename);
|
|
10
11
|
/**
|
|
@@ -27,14 +28,23 @@ export function showVersion() {
|
|
|
27
28
|
*/
|
|
28
29
|
export function showHelp() {
|
|
29
30
|
const version = getVersion();
|
|
31
|
+
const pluginCommandsInfo = getPluginCommandsInfo();
|
|
32
|
+
let pluginSection = '';
|
|
33
|
+
if (pluginCommandsInfo.length > 0) {
|
|
34
|
+
pluginSection = '\n\nPlugin Commands:';
|
|
35
|
+
for (const cmd of pluginCommandsInfo) {
|
|
36
|
+
const desc = cmd.description ? ` ${cmd.description}` : '';
|
|
37
|
+
pluginSection += `\n ${cmd.commandName.padEnd(20)}${desc}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
30
40
|
console.log(`
|
|
31
41
|
c8ctl - Camunda 8 CLI v${version}
|
|
32
42
|
|
|
33
43
|
Usage: c8ctl <command> [resource] [options]
|
|
34
44
|
|
|
35
45
|
Commands:
|
|
36
|
-
list <resource> List resources (pi, ut, inc, jobs, profiles)
|
|
37
|
-
get <resource> <key> Get resource by key (pi, topology)
|
|
46
|
+
list <resource> List resources (pi, pd, ut, inc, jobs, profiles)
|
|
47
|
+
get <resource> <key> Get resource by key (pi, pd, topology)
|
|
38
48
|
create <resource> Create resource (pi)
|
|
39
49
|
cancel <resource> <key> Cancel resource (pi)
|
|
40
50
|
complete <resource> <key> Complete resource (ut, job)
|
|
@@ -53,23 +63,29 @@ Commands:
|
|
|
53
63
|
unload plugin <name> Unload a c8ctl plugin (npm uninstall wrapper)
|
|
54
64
|
use profile|tenant Set active profile or tenant
|
|
55
65
|
output json|text Set output format
|
|
56
|
-
|
|
66
|
+
completion bash|zsh|fish Generate shell completion script
|
|
67
|
+
help Show this help${pluginSection}
|
|
57
68
|
|
|
58
69
|
Flags:
|
|
59
70
|
--profile <name> Use specific profile for this command
|
|
60
71
|
--from <url> Load plugin from URL (use with 'load plugin')
|
|
72
|
+
--xml Get process definition as XML (use with 'get pd')
|
|
61
73
|
--version, -v Show version
|
|
62
74
|
--help, -h Show help
|
|
63
75
|
|
|
64
76
|
Resource Aliases:
|
|
65
77
|
pi = process-instance(s)
|
|
78
|
+
pd = process-definition(s)
|
|
66
79
|
ut = user-task(s)
|
|
67
80
|
inc = incident(s)
|
|
68
81
|
msg = message
|
|
69
82
|
|
|
70
83
|
Examples:
|
|
71
84
|
c8ctl list pi List process instances
|
|
85
|
+
c8ctl list pd List process definitions
|
|
72
86
|
c8ctl get pi 123456 Get process instance by key
|
|
87
|
+
c8ctl get pd 123456 Get process definition by key
|
|
88
|
+
c8ctl get pd 123456 --xml Get process definition XML
|
|
73
89
|
c8ctl create pi --bpmnProcessId=myProcess
|
|
74
90
|
c8ctl deploy ./my-process.bpmn Deploy a BPMN file
|
|
75
91
|
c8ctl run ./my-process.bpmn Deploy and start process
|
|
@@ -78,6 +94,7 @@ Examples:
|
|
|
78
94
|
c8ctl output json Switch to JSON output
|
|
79
95
|
c8ctl load plugin my-plugin Load plugin from npm registry
|
|
80
96
|
c8ctl load plugin --from file:///path/to/plugin Load plugin from file URL
|
|
97
|
+
c8ctl completion bash Generate bash completion script
|
|
81
98
|
`.trim());
|
|
82
99
|
}
|
|
83
100
|
/**
|
|
@@ -85,8 +102,8 @@ Examples:
|
|
|
85
102
|
*/
|
|
86
103
|
export function showVerbResources(verb) {
|
|
87
104
|
const resources = {
|
|
88
|
-
list: 'process-instances (pi), user-tasks (ut), incidents (inc), jobs, profiles, plugins',
|
|
89
|
-
get: 'process-instance (pi), topology',
|
|
105
|
+
list: 'process-instances (pi), process-definitions (pd), user-tasks (ut), incidents (inc), jobs, profiles, plugins',
|
|
106
|
+
get: 'process-instance (pi), process-definition (pd), topology',
|
|
90
107
|
create: 'process-instance (pi)',
|
|
91
108
|
complete: 'user-task (ut), job',
|
|
92
109
|
cancel: 'process-instance (pi)',
|
|
@@ -102,6 +119,7 @@ export function showVerbResources(verb) {
|
|
|
102
119
|
unload: 'plugin',
|
|
103
120
|
use: 'profile, tenant',
|
|
104
121
|
output: 'json, text',
|
|
122
|
+
completion: 'bash, zsh, fish',
|
|
105
123
|
};
|
|
106
124
|
const available = resources[verb];
|
|
107
125
|
if (available) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process definition commands
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* List process definitions
|
|
6
|
+
*/
|
|
7
|
+
export declare function listProcessDefinitions(options: {
|
|
8
|
+
profile?: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Get process definition by key
|
|
12
|
+
*/
|
|
13
|
+
export declare function getProcessDefinition(key: string, options: {
|
|
14
|
+
profile?: string;
|
|
15
|
+
xml?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=process-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-definitions.d.ts","sourceRoot":"","sources":["../../src/commands/process-definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process definition commands
|
|
3
|
+
*/
|
|
4
|
+
import { getLogger } from "../logger.js";
|
|
5
|
+
import { createClient } from "../client.js";
|
|
6
|
+
import { resolveTenantId } from "../config.js";
|
|
7
|
+
/**
|
|
8
|
+
* List process definitions
|
|
9
|
+
*/
|
|
10
|
+
export async function listProcessDefinitions(options) {
|
|
11
|
+
const logger = getLogger();
|
|
12
|
+
const client = createClient(options.profile);
|
|
13
|
+
const tenantId = resolveTenantId(options.profile);
|
|
14
|
+
try {
|
|
15
|
+
const filter = {
|
|
16
|
+
filter: {
|
|
17
|
+
tenantId,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const result = await client.searchProcessDefinitions(filter, { consistency: { waitUpToMs: 0 } });
|
|
21
|
+
if (result.items && result.items.length > 0) {
|
|
22
|
+
const tableData = result.items.map((pd) => ({
|
|
23
|
+
Key: pd.processDefinitionKey || pd.key,
|
|
24
|
+
'Process ID': pd.processDefinitionId,
|
|
25
|
+
Name: pd.name || '-',
|
|
26
|
+
Version: pd.version,
|
|
27
|
+
'Tenant ID': pd.tenantId,
|
|
28
|
+
}));
|
|
29
|
+
logger.table(tableData);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
logger.info('No process definitions found');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
logger.error('Failed to list process definitions', error);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get process definition by key
|
|
42
|
+
*/
|
|
43
|
+
export async function getProcessDefinition(key, options) {
|
|
44
|
+
const logger = getLogger();
|
|
45
|
+
const client = createClient(options.profile);
|
|
46
|
+
try {
|
|
47
|
+
if (options.xml) {
|
|
48
|
+
const result = await client.getProcessDefinitionXml({ processDefinitionKey: key }, { consistency: { waitUpToMs: 0 } });
|
|
49
|
+
logger.info(result);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const result = await client.getProcessDefinition({ processDefinitionKey: key }, { consistency: { waitUpToMs: 0 } });
|
|
53
|
+
logger.json(result);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.error(`Failed to get process definition ${key}`, error);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=process-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-definitions.js","sourceRoot":"","sources":["../../src/commands/process-definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAE5C;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,MAAM,GAAQ;YAClB,MAAM,EAAE;gBACN,QAAQ;aACT;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjG,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;gBAC/C,GAAG,EAAE,EAAE,CAAC,oBAAoB,IAAI,EAAE,CAAC,GAAG;gBACtC,YAAY,EAAE,EAAE,CAAC,mBAAmB;gBACpC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG;gBACpB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,WAAW,EAAE,EAAE,CAAC,QAAQ;aACzB,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAc,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,OAGvD;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CACjD,EAAE,oBAAoB,EAAE,GAAU,EAAE,EACpC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CACnC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAC9C,EAAE,oBAAoB,EAAE,GAAU,EAAE,EACpC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CACnC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Profile management commands
|
|
3
|
+
* c8ctl profiles are stored in DATA_DIR/c8ctl/profiles.json
|
|
4
|
+
* Modeler connections are read from settings.json (read-only) with "modeler:" prefix
|
|
3
5
|
*/
|
|
4
6
|
/**
|
|
5
|
-
* List all profiles
|
|
7
|
+
* List all profiles (c8ctl + Modeler)
|
|
6
8
|
*/
|
|
7
9
|
export declare function listProfiles(): void;
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
11
|
+
* Show profile details
|
|
10
12
|
*/
|
|
11
|
-
export declare function
|
|
12
|
-
|
|
13
|
+
export declare function showProfile(name: string): void;
|
|
14
|
+
export interface AddProfileOptions {
|
|
15
|
+
url?: string;
|
|
13
16
|
clientId?: string;
|
|
14
17
|
clientSecret?: string;
|
|
15
18
|
audience?: string;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
oauthUrl?: string;
|
|
20
|
+
username?: string;
|
|
21
|
+
password?: string;
|
|
22
|
+
tenantId?: string;
|
|
23
|
+
}
|
|
19
24
|
/**
|
|
20
|
-
*
|
|
25
|
+
* Add a c8ctl profile
|
|
26
|
+
*/
|
|
27
|
+
export declare function addProfile(name: string, options: AddProfileOptions): void;
|
|
28
|
+
/**
|
|
29
|
+
* Remove a c8ctl profile
|
|
21
30
|
*/
|
|
22
31
|
export declare function removeProfile(name: string): void;
|
|
23
32
|
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAsCnC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAwBzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBhD"}
|
|
@@ -1,70 +1,109 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Profile management commands
|
|
3
|
+
* c8ctl profiles are stored in DATA_DIR/c8ctl/profiles.json
|
|
4
|
+
* Modeler connections are read from settings.json (read-only) with "modeler:" prefix
|
|
3
5
|
*/
|
|
4
6
|
import { getLogger } from "../logger.js";
|
|
5
|
-
import {
|
|
7
|
+
import { getAllProfiles, getProfileOrModeler, addProfile as addProfileConfig, removeProfile as removeProfileConfig, MODELER_PREFIX, } from "../config.js";
|
|
6
8
|
/**
|
|
7
|
-
* List all profiles
|
|
9
|
+
* List all profiles (c8ctl + Modeler)
|
|
8
10
|
*/
|
|
9
11
|
export function listProfiles() {
|
|
10
12
|
const logger = getLogger();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
const totalProfiles = c8ctlProfiles.length + modelerProfiles.length;
|
|
14
|
-
if (totalProfiles === 0) {
|
|
13
|
+
const profiles = getAllProfiles();
|
|
14
|
+
if (profiles.length === 0) {
|
|
15
15
|
logger.info('No profiles configured');
|
|
16
|
+
logger.info('');
|
|
17
|
+
logger.info('Add a profile with: c8ctl profiles add <name> --url <cluster-url>');
|
|
18
|
+
logger.info('Or configure connections in Camunda Modeler and they will appear with "modeler:" prefix.');
|
|
16
19
|
return;
|
|
17
20
|
}
|
|
18
|
-
const tableData =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
const tableData = profiles.map(profile => {
|
|
22
|
+
const isModeler = profile.name.startsWith(MODELER_PREFIX);
|
|
23
|
+
return {
|
|
24
|
+
Name: profile.name,
|
|
25
|
+
URL: profile.baseUrl || '(not set)',
|
|
26
|
+
Tenant: profile.defaultTenantId || '<default>',
|
|
27
|
+
Source: isModeler ? 'Modeler' : 'c8ctl',
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
logger.table(tableData);
|
|
31
|
+
// Show hint about read-only Modeler profiles
|
|
32
|
+
const hasModelerProfiles = profiles.some(p => p.name.startsWith(MODELER_PREFIX));
|
|
33
|
+
if (hasModelerProfiles) {
|
|
34
|
+
logger.info('');
|
|
35
|
+
logger.info(`Note: Modeler profiles (prefixed with "${MODELER_PREFIX}") are read-only. Manage them in Camunda Modeler.`);
|
|
27
36
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Show profile details
|
|
40
|
+
*/
|
|
41
|
+
export function showProfile(name) {
|
|
42
|
+
const logger = getLogger();
|
|
43
|
+
const profile = getProfileOrModeler(name);
|
|
44
|
+
if (!profile) {
|
|
45
|
+
logger.error(`Profile '${name}' not found`);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
const isModeler = profile.name.startsWith(MODELER_PREFIX);
|
|
49
|
+
logger.info(`Profile: ${profile.name}`);
|
|
50
|
+
logger.info(` Source: ${isModeler ? 'Camunda Modeler (read-only)' : 'c8ctl'}`);
|
|
51
|
+
logger.info(` Base URL: ${profile.baseUrl}`);
|
|
52
|
+
if (profile.username) {
|
|
53
|
+
logger.info(` Username: ${profile.username}`);
|
|
54
|
+
logger.info(` Password: ${profile.password ? '********' : '(not set)'}`);
|
|
55
|
+
}
|
|
56
|
+
if (profile.clientId) {
|
|
57
|
+
logger.info(` Client ID: ${profile.clientId}`);
|
|
58
|
+
logger.info(` Client Secret: ${profile.clientSecret ? '********' : '(not set)'}`);
|
|
59
|
+
}
|
|
60
|
+
if (profile.audience) {
|
|
61
|
+
logger.info(` Audience: ${profile.audience}`);
|
|
62
|
+
}
|
|
63
|
+
if (profile.oAuthUrl) {
|
|
64
|
+
logger.info(` OAuth URL: ${profile.oAuthUrl}`);
|
|
65
|
+
}
|
|
66
|
+
if (profile.defaultTenantId) {
|
|
67
|
+
logger.info(` Default Tenant: ${profile.defaultTenantId}`);
|
|
37
68
|
}
|
|
38
|
-
logger.table(tableData);
|
|
39
69
|
}
|
|
40
70
|
/**
|
|
41
|
-
* Add a profile
|
|
71
|
+
* Add a c8ctl profile
|
|
42
72
|
*/
|
|
43
73
|
export function addProfile(name, options) {
|
|
44
74
|
const logger = getLogger();
|
|
45
|
-
//
|
|
46
|
-
if (
|
|
47
|
-
logger.error(
|
|
75
|
+
// Prevent adding profiles with "modeler:" prefix
|
|
76
|
+
if (name.startsWith(MODELER_PREFIX)) {
|
|
77
|
+
logger.error(`Profile names cannot start with "${MODELER_PREFIX}" - this prefix is reserved for Camunda Modeler connections`);
|
|
78
|
+
logger.info('Please choose a different name or manage this profile in Camunda Modeler');
|
|
48
79
|
process.exit(1);
|
|
49
80
|
}
|
|
50
81
|
const profile = {
|
|
51
82
|
name,
|
|
52
|
-
baseUrl: options.
|
|
83
|
+
baseUrl: options.url || 'http://localhost:8080/v2',
|
|
53
84
|
clientId: options.clientId,
|
|
54
85
|
clientSecret: options.clientSecret,
|
|
55
86
|
audience: options.audience,
|
|
56
|
-
oAuthUrl: options.
|
|
57
|
-
|
|
87
|
+
oAuthUrl: options.oauthUrl,
|
|
88
|
+
username: options.username,
|
|
89
|
+
password: options.password,
|
|
90
|
+
defaultTenantId: options.tenantId,
|
|
58
91
|
};
|
|
59
|
-
|
|
92
|
+
addProfileConfig(profile);
|
|
60
93
|
logger.success(`Profile '${name}' added`);
|
|
61
94
|
}
|
|
62
95
|
/**
|
|
63
|
-
* Remove a profile
|
|
96
|
+
* Remove a c8ctl profile
|
|
64
97
|
*/
|
|
65
98
|
export function removeProfile(name) {
|
|
66
99
|
const logger = getLogger();
|
|
67
|
-
|
|
100
|
+
// Prevent removing Modeler profiles
|
|
101
|
+
if (name.startsWith(MODELER_PREFIX)) {
|
|
102
|
+
logger.error('Cannot remove Modeler profiles via c8ctl');
|
|
103
|
+
logger.info('Manage Modeler connections directly in Camunda Modeler');
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
const removed = removeProfileConfig(name);
|
|
68
107
|
if (removed) {
|
|
69
108
|
logger.success(`Profile '${name}' removed`);
|
|
70
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAY7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAclD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAY7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAclD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC"}
|
package/dist/commands/session.js
CHANGED
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
* Session management commands (use profile, use tenant, output mode)
|
|
3
3
|
*/
|
|
4
4
|
import { getLogger } from "../logger.js";
|
|
5
|
-
import { setActiveProfile, setActiveTenant, setOutputMode,
|
|
5
|
+
import { setActiveProfile, setActiveTenant, setOutputMode, getProfileOrModeler, } from "../config.js";
|
|
6
|
+
import { c8ctl } from "../runtime.js";
|
|
6
7
|
/**
|
|
7
8
|
* Set active profile
|
|
8
9
|
*/
|
|
9
10
|
export function useProfile(name) {
|
|
10
11
|
const logger = getLogger();
|
|
11
|
-
// Verify profile exists
|
|
12
|
-
const profile =
|
|
12
|
+
// Verify profile exists (checks both c8ctl and Modeler profiles)
|
|
13
|
+
const profile = getProfileOrModeler(name);
|
|
13
14
|
if (!profile) {
|
|
14
15
|
logger.error(`Profile '${name}' not found`);
|
|
15
16
|
process.exit(1);
|
|
@@ -44,11 +45,10 @@ export function setOutputFormat(mode) {
|
|
|
44
45
|
*/
|
|
45
46
|
export function showSessionState() {
|
|
46
47
|
const logger = getLogger();
|
|
47
|
-
const state = loadSessionState();
|
|
48
48
|
logger.info('\nCurrent Session State:');
|
|
49
|
-
logger.info(` Active Profile: ${
|
|
50
|
-
logger.info(` Active Tenant: ${
|
|
51
|
-
logger.info(` Output Mode: ${
|
|
49
|
+
logger.info(` Active Profile: ${c8ctl.activeProfile || '(none)'}`);
|
|
50
|
+
logger.info(` Active Tenant: ${c8ctl.activeTenant || '(none)'}`);
|
|
51
|
+
logger.info(` Output Mode: ${c8ctl.outputMode}`);
|
|
52
52
|
logger.info('');
|
|
53
53
|
}
|
|
54
54
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,iEAAiE;IACjE,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,MAAM,CAAC,OAAO,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,4BAA4B,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,IAAkB,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,CAAC,IAAI,GAAG,IAAkB,CAAC;IAEjC,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|