@camunda8/cli 2.6.1 → 2.7.0-alpha.10

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.
Files changed (144) hide show
  1. package/README.md +80 -1
  2. package/dist/command-dispatch.d.ts +16 -0
  3. package/dist/command-dispatch.d.ts.map +1 -0
  4. package/dist/command-dispatch.js +129 -0
  5. package/dist/command-dispatch.js.map +1 -0
  6. package/dist/command-framework.d.ts +248 -0
  7. package/dist/command-framework.d.ts.map +1 -0
  8. package/dist/command-framework.js +229 -0
  9. package/dist/command-framework.js.map +1 -0
  10. package/dist/command-registry.d.ts +2089 -0
  11. package/dist/command-registry.d.ts.map +1 -0
  12. package/dist/command-registry.js +1482 -0
  13. package/dist/command-registry.js.map +1 -0
  14. package/dist/command-validation.d.ts +30 -4
  15. package/dist/command-validation.d.ts.map +1 -1
  16. package/dist/command-validation.js +90 -4
  17. package/dist/command-validation.js.map +1 -1
  18. package/dist/commands/completion.d.ts +25 -1
  19. package/dist/commands/completion.d.ts.map +1 -1
  20. package/dist/commands/completion.js +590 -1223
  21. package/dist/commands/completion.js.map +1 -1
  22. package/dist/commands/deployments.d.ts +2 -0
  23. package/dist/commands/deployments.d.ts.map +1 -1
  24. package/dist/commands/deployments.js +13 -2
  25. package/dist/commands/deployments.js.map +1 -1
  26. package/dist/commands/forms.d.ts +2 -20
  27. package/dist/commands/forms.d.ts.map +1 -1
  28. package/dist/commands/forms.js +76 -79
  29. package/dist/commands/forms.js.map +1 -1
  30. package/dist/commands/help.d.ts +4 -88
  31. package/dist/commands/help.d.ts.map +1 -1
  32. package/dist/commands/help.js +574 -1941
  33. package/dist/commands/help.js.map +1 -1
  34. package/dist/commands/identity-authorizations.d.ts +5 -24
  35. package/dist/commands/identity-authorizations.d.ts.map +1 -1
  36. package/dist/commands/identity-authorizations.js +113 -137
  37. package/dist/commands/identity-authorizations.js.map +1 -1
  38. package/dist/commands/identity-groups.d.ts +5 -26
  39. package/dist/commands/identity-groups.d.ts.map +1 -1
  40. package/dist/commands/identity-groups.js +91 -124
  41. package/dist/commands/identity-groups.js.map +1 -1
  42. package/dist/commands/identity-mapping-rules.d.ts +5 -30
  43. package/dist/commands/identity-mapping-rules.d.ts.map +1 -1
  44. package/dist/commands/identity-mapping-rules.js +106 -136
  45. package/dist/commands/identity-mapping-rules.js.map +1 -1
  46. package/dist/commands/identity-roles.d.ts +5 -26
  47. package/dist/commands/identity-roles.d.ts.map +1 -1
  48. package/dist/commands/identity-roles.js +91 -124
  49. package/dist/commands/identity-roles.js.map +1 -1
  50. package/dist/commands/identity-tenants.d.ts +5 -26
  51. package/dist/commands/identity-tenants.d.ts.map +1 -1
  52. package/dist/commands/identity-tenants.js +92 -126
  53. package/dist/commands/identity-tenants.js.map +1 -1
  54. package/dist/commands/identity-users.d.ts +5 -29
  55. package/dist/commands/identity-users.d.ts.map +1 -1
  56. package/dist/commands/identity-users.js +95 -129
  57. package/dist/commands/identity-users.js.map +1 -1
  58. package/dist/commands/identity.d.ts +6 -6
  59. package/dist/commands/identity.d.ts.map +1 -1
  60. package/dist/commands/identity.js +6 -7
  61. package/dist/commands/identity.js.map +1 -1
  62. package/dist/commands/incidents.d.ts +3 -16
  63. package/dist/commands/incidents.d.ts.map +1 -1
  64. package/dist/commands/incidents.js +71 -98
  65. package/dist/commands/incidents.js.map +1 -1
  66. package/dist/commands/jobs.d.ts +4 -26
  67. package/dist/commands/jobs.d.ts.map +1 -1
  68. package/dist/commands/jobs.js +143 -159
  69. package/dist/commands/jobs.js.map +1 -1
  70. package/dist/commands/mcp-proxy.d.ts +1 -0
  71. package/dist/commands/mcp-proxy.d.ts.map +1 -1
  72. package/dist/commands/mcp-proxy.js +10 -2
  73. package/dist/commands/mcp-proxy.js.map +1 -1
  74. package/dist/commands/messages.d.ts +2 -12
  75. package/dist/commands/messages.d.ts.map +1 -1
  76. package/dist/commands/messages.js +87 -81
  77. package/dist/commands/messages.js.map +1 -1
  78. package/dist/commands/open.d.ts +4 -0
  79. package/dist/commands/open.d.ts.map +1 -1
  80. package/dist/commands/open.js +18 -0
  81. package/dist/commands/open.js.map +1 -1
  82. package/dist/commands/plugins.d.ts +7 -9
  83. package/dist/commands/plugins.d.ts.map +1 -1
  84. package/dist/commands/plugins.js +32 -25
  85. package/dist/commands/plugins.js.map +1 -1
  86. package/dist/commands/process-definitions.d.ts +2 -14
  87. package/dist/commands/process-definitions.d.ts.map +1 -1
  88. package/dist/commands/process-definitions.js +57 -80
  89. package/dist/commands/process-definitions.js.map +1 -1
  90. package/dist/commands/process-instances.d.ts +8 -37
  91. package/dist/commands/process-instances.d.ts.map +1 -1
  92. package/dist/commands/process-instances.js +242 -193
  93. package/dist/commands/process-instances.js.map +1 -1
  94. package/dist/commands/profiles.d.ts +4 -0
  95. package/dist/commands/profiles.d.ts.map +1 -1
  96. package/dist/commands/profiles.js +29 -0
  97. package/dist/commands/profiles.js.map +1 -1
  98. package/dist/commands/run.d.ts +2 -0
  99. package/dist/commands/run.d.ts.map +1 -1
  100. package/dist/commands/run.js +10 -0
  101. package/dist/commands/run.js.map +1 -1
  102. package/dist/commands/search.d.ts +7 -100
  103. package/dist/commands/search.d.ts.map +1 -1
  104. package/dist/commands/search.js +530 -694
  105. package/dist/commands/search.js.map +1 -1
  106. package/dist/commands/session.d.ts +3 -0
  107. package/dist/commands/session.d.ts.map +1 -1
  108. package/dist/commands/session.js +30 -0
  109. package/dist/commands/session.js.map +1 -1
  110. package/dist/commands/topology.d.ts +1 -3
  111. package/dist/commands/topology.d.ts.map +1 -1
  112. package/dist/commands/topology.js +11 -18
  113. package/dist/commands/topology.js.map +1 -1
  114. package/dist/commands/user-tasks.d.ts +2 -16
  115. package/dist/commands/user-tasks.d.ts.map +1 -1
  116. package/dist/commands/user-tasks.js +73 -101
  117. package/dist/commands/user-tasks.js.map +1 -1
  118. package/dist/commands/watch.d.ts +1 -0
  119. package/dist/commands/watch.d.ts.map +1 -1
  120. package/dist/commands/watch.js +15 -0
  121. package/dist/commands/watch.js.map +1 -1
  122. package/dist/config.d.ts.map +1 -1
  123. package/dist/config.js +5 -0
  124. package/dist/config.js.map +1 -1
  125. package/dist/default-plugins/cluster/README.md +1 -1
  126. package/dist/default-plugins/cluster/c8ctl-plugin.js +281 -59
  127. package/dist/index.d.ts +0 -4
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +111 -1023
  130. package/dist/index.js.map +1 -1
  131. package/dist/logger.d.ts +5 -0
  132. package/dist/logger.d.ts.map +1 -1
  133. package/dist/logger.js +7 -1
  134. package/dist/logger.js.map +1 -1
  135. package/dist/plugin-loader.d.ts +5 -0
  136. package/dist/plugin-loader.d.ts.map +1 -1
  137. package/dist/plugin-loader.js +1 -0
  138. package/dist/plugin-loader.js.map +1 -1
  139. package/dist/update-check.d.ts +67 -0
  140. package/dist/update-check.d.ts.map +1 -0
  141. package/dist/update-check.js +284 -0
  142. package/dist/update-check.js.map +1 -0
  143. package/package.json +3 -2
  144. /package/dist/templates/{tsconfig.json → tsconfig.json.template} +0 -0
@@ -1,12 +1,218 @@
1
1
  /**
2
- * Shell completion commands
2
+ * Shell completion commands — derived from COMMAND_REGISTRY + plugins.
3
3
  */
4
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
+ import { homedir, platform } from "node:os";
6
+ import { join } from "node:path";
7
+ import { COMMAND_REGISTRY, GLOBAL_FLAGS, RESOURCE_ALIASES, } from "../command-registry.js";
8
+ import { getUserDataDir } from "../config.js";
4
9
  import { getLogger } from "../logger.js";
5
- /**
6
- * Generate bash completion script
7
- */
10
+ import { getPluginCommandsInfo, } from "../plugin-loader.js";
11
+ import { c8ctl } from "../runtime.js";
12
+ // ─── Typed helpers (same pattern as help.ts) ─────────────────────────────────
13
+ /** Typed entries for COMMAND_REGISTRY — avoids per-loop casts. */
14
+ function registryEntries() {
15
+ return Object.entries(COMMAND_REGISTRY);
16
+ }
17
+ /** Typed entries for a flag record — avoids per-loop casts. */
18
+ function flagEntries(flags) {
19
+ return Object.entries(flags);
20
+ }
21
+ // ─── Derived completion data ─────────────────────────────────────────────────
22
+ /** Reverse map: canonical resource → all names that resolve to it (including itself). */
23
+ function buildCanonicalToAliases() {
24
+ const map = new Map();
25
+ // Seed with every known canonical name from the registry
26
+ for (const [, def] of registryEntries()) {
27
+ for (const r of def.resources) {
28
+ const canonical = RESOURCE_ALIASES[r] ?? r;
29
+ if (!map.has(canonical)) {
30
+ map.set(canonical, [canonical]);
31
+ }
32
+ }
33
+ }
34
+ // Add every alias
35
+ for (const [alias, canonical] of Object.entries(RESOURCE_ALIASES)) {
36
+ if (!map.has(canonical)) {
37
+ map.set(canonical, [canonical]);
38
+ }
39
+ const arr = map.get(canonical) ?? [];
40
+ if (!arr.includes(alias)) {
41
+ arr.push(alias);
42
+ }
43
+ }
44
+ return map;
45
+ }
46
+ /** All accepted forms for a verb's resources (canonical + all aliases). */
47
+ function resourceFormsForVerb(def, canonicalToAliases) {
48
+ const seen = new Set();
49
+ for (const r of def.resources) {
50
+ const canonical = RESOURCE_ALIASES[r] ?? r;
51
+ for (const form of canonicalToAliases.get(canonical) ?? [canonical]) {
52
+ seen.add(form);
53
+ }
54
+ }
55
+ return [...seen];
56
+ }
57
+ function deriveVerbInfos(pluginCommandsInfo) {
58
+ const canonicalToAliases = buildCanonicalToAliases();
59
+ const infos = [];
60
+ for (const [verb, def] of registryEntries()) {
61
+ // Skip mcp-proxy — not a user-facing verb
62
+ if (verb === "mcp-proxy")
63
+ continue;
64
+ const resources = resourceFormsForVerb(def, canonicalToAliases);
65
+ const fileComplete = !def.requiresResource &&
66
+ def.resources.length === 0 &&
67
+ ["deploy", "run", "watch"].includes(verb);
68
+ infos.push({
69
+ verb,
70
+ description: def.description,
71
+ resources,
72
+ aliases: def.aliases ?? [],
73
+ fileComplete,
74
+ });
75
+ }
76
+ // Plugin-provided verbs (e.g. cluster)
77
+ for (const cmd of pluginCommandsInfo) {
78
+ // Skip if already in registry
79
+ if (cmd.commandName in COMMAND_REGISTRY)
80
+ continue;
81
+ infos.push({
82
+ verb: cmd.commandName,
83
+ description: cmd.description ?? "",
84
+ resources: (cmd.subcommands ?? []).map((s) => s.name),
85
+ aliases: [],
86
+ fileComplete: false,
87
+ });
88
+ }
89
+ return infos;
90
+ }
91
+ /** Collect all unique flag names across all commands + global + search flags. */
92
+ function deriveAllFlagNames() {
93
+ const names = new Set();
94
+ for (const name of Object.keys(GLOBAL_FLAGS)) {
95
+ names.add(name);
96
+ }
97
+ for (const [, def] of registryEntries()) {
98
+ for (const [name] of flagEntries(def.flags)) {
99
+ names.add(name);
100
+ }
101
+ if (def.resourceFlags) {
102
+ for (const rf of Object.values(def.resourceFlags)) {
103
+ for (const name of Object.keys(rf)) {
104
+ names.add(name);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ return [...names].map((n) => `--${n}`);
110
+ }
111
+ /** Collect all flags with descriptions and types for rich completions (zsh/fish). */
112
+ function deriveAllFlags() {
113
+ const seen = new Map();
114
+ function addFlags(flags) {
115
+ for (const [name, def] of flagEntries(flags)) {
116
+ if (!seen.has(name)) {
117
+ seen.set(name, {
118
+ description: def.description,
119
+ type: def.type,
120
+ short: def.short,
121
+ });
122
+ }
123
+ }
124
+ }
125
+ addFlags(GLOBAL_FLAGS);
126
+ for (const [, def] of registryEntries()) {
127
+ addFlags(def.flags);
128
+ if (def.resourceFlags) {
129
+ for (const rf of Object.values(def.resourceFlags)) {
130
+ addFlags(rf);
131
+ }
132
+ }
133
+ }
134
+ return [...seen].map(([name, info]) => ({
135
+ name,
136
+ ...info,
137
+ }));
138
+ }
139
+ /** Get resources for the `help` verb: verbs with hasDetailedHelp + special topics. */
140
+ function deriveHelpResources() {
141
+ const items = [];
142
+ for (const [verb, def] of registryEntries()) {
143
+ if (def.hasDetailedHelp) {
144
+ items.push({ name: verb, description: `Show ${verb} command help` });
145
+ }
146
+ }
147
+ // Special topics that aren't verbs but have help pages
148
+ items.push({
149
+ name: "profiles",
150
+ description: "Show profile management help",
151
+ }, {
152
+ name: "profile",
153
+ description: "Alias for profile management help",
154
+ }, {
155
+ name: "plugin",
156
+ description: "Show plugin management help",
157
+ }, {
158
+ name: "plugins",
159
+ description: "Alias for plugin management help",
160
+ });
161
+ // Plugin verbs
162
+ const pluginCmds = getPluginCommandsInfo();
163
+ for (const cmd of pluginCmds) {
164
+ if (!items.some((i) => i.name === cmd.commandName) &&
165
+ !(cmd.commandName in COMMAND_REGISTRY)) {
166
+ items.push({
167
+ name: cmd.commandName,
168
+ description: cmd.description
169
+ ? `Show ${cmd.commandName} command help`
170
+ : `No detailed help; use c8ctl help for general usage`,
171
+ });
172
+ }
173
+ }
174
+ return items;
175
+ }
176
+ // ─── Bash completion ─────────────────────────────────────────────────────────
8
177
  function generateBashCompletion() {
9
- return `# c8ctl bash completion
178
+ const pluginCmds = getPluginCommandsInfo();
179
+ const verbInfos = deriveVerbInfos(pluginCmds);
180
+ const allFlags = deriveAllFlagNames();
181
+ const helpResources = deriveHelpResources();
182
+ // All verb names (including aliases)
183
+ const allVerbs = new Set();
184
+ for (const v of verbInfos) {
185
+ allVerbs.add(v.verb);
186
+ for (const a of v.aliases)
187
+ allVerbs.add(a);
188
+ }
189
+ const verbsStr = [...allVerbs].join(" ");
190
+ const flagsStr = allFlags.join(" ");
191
+ // Build per-verb resource variables
192
+ const resourceVars = [];
193
+ const caseBranches = [];
194
+ for (const v of verbInfos) {
195
+ if (v.verb === "help") {
196
+ // Help completes to verbs/topics, not resources
197
+ resourceVars.push(` local help_resources="${helpResources.map((r) => r.name).join(" ")}"`);
198
+ caseBranches.push(` help)\n COMPREPLY=( $(compgen -W "\${help_resources}" -- "\${cur}") )\n ;;`);
199
+ continue;
200
+ }
201
+ if (v.fileComplete) {
202
+ // deploy/run/watch complete with files
203
+ caseBranches.push(` ${v.verb})\n COMPREPLY=( $(compgen -f -- "\${cur}") )\n ;;`);
204
+ continue;
205
+ }
206
+ if (v.resources.length === 0)
207
+ continue;
208
+ const varName = `${v.verb.replace(/-/g, "_")}_resources`;
209
+ resourceVars.push(` local ${varName}="${v.resources.join(" ")}"`);
210
+ // Include aliases in the case pattern
211
+ const casePattern = v.aliases.length > 0 ? `${v.verb}|${v.aliases.join("|")}` : v.verb;
212
+ caseBranches.push(` ${casePattern})\n COMPREPLY=( $(compgen -W "\${${varName}}" -- "\${cur}") )\n ;;`);
213
+ }
214
+ return `# c8ctl-completion-version: ${c8ctl.version}
215
+ # c8ctl bash completion
10
216
  _c8ctl_completions() {
11
217
  local cur prev words cword
12
218
 
@@ -18,42 +224,13 @@ _c8ctl_completions() {
18
224
  cword=\${COMP_CWORD}
19
225
 
20
226
  # Commands (verbs)
21
- local verbs="list search get create delete cancel await complete fail activate resolve publish correlate deploy run watch open add remove rm load unload sync upgrade downgrade assign unassign init use which output completion help cluster feedback"
227
+ local verbs="${verbsStr}"
22
228
 
23
229
  # Resources by verb
24
- local list_resources="process-instances process-instance pi user-tasks user-task ut incidents incident inc jobs profiles profile plugins plugin users user roles role groups group tenants tenant authorizations authorization auth mapping-rules mapping-rule mr"
25
- local search_resources="process-instances process-instance pi process-definitions process-definition pd user-tasks user-task ut incidents incident inc jobs variables variable vars users user roles role groups group tenants tenant authorizations authorization auth mapping-rules mapping-rule mr"
26
- local get_resources="process-instance pi process-definition pd incident inc topology form user role group tenant authorization auth mapping-rule mr"
27
- local create_resources="process-instance pi user role group tenant authorization auth mapping-rule mr"
28
- local cancel_resources="process-instance pi"
29
- local await_resources="process-instance pi"
30
- local complete_resources="user-task ut job"
31
- local fail_resources="job"
32
- local activate_resources="jobs"
33
- local resolve_resources="incident inc"
34
- local publish_resources="message msg"
35
- local correlate_resources="message msg"
36
- local add_resources="profile"
37
- local remove_resources="profile"
38
- local load_resources="plugin"
39
- local unload_resources="plugin"
40
- local sync_resources="plugin plugins"
41
- local upgrade_resources="plugin"
42
- local downgrade_resources="plugin"
43
- local init_resources="plugin"
44
- local use_resources="profile tenant"
45
- local which_resources="profile"
46
- local output_resources="json text"
47
- local completion_resources="bash zsh fish"
48
- local cluster_resources="start stop status list list-remote install delete log logs"
49
- local open_resources="operate tasklist modeler optimize"
50
- local delete_resources="user role group tenant authorization auth mapping-rule mr"
51
- local assign_resources="role user group mapping-rule mr"
52
- local unassign_resources="role user group mapping-rule mr"
53
- local help_resources="list get create delete complete await search deploy run watch open cancel resolve fail activate publish correlate upgrade downgrade init assign unassign profiles profile plugin plugins cluster feedback"
230
+ ${resourceVars.join("\n")}
54
231
 
55
232
  # Global flags
56
- local flags="--help --version --profile --from --all --bpmnProcessId --id --processInstanceKey --processDefinitionKey --parentProcessInstanceKey --variables --state --assignee --type --correlationKey --timeToLive --maxJobsToActivate --timeout --worker --retries --errorMessage --baseUrl --clientId --clientSecret --audience --oAuthUrl --defaultTenantId --awaitCompletion --fetchVariables --requestTimeout --sortBy --asc --desc --limit --between --dateField --name --key --elementId --errorType --value --scopeKey --fullValue --userTask --ut --processDefinition --pd --iname --iid --iassignee --ierrorMessage --itype --ivalue --fields --dry-run --verbose --force --none --from-file --from-env --username --email --password --ownerId --ownerType --roleId --groupId --resourceType --resourceId --permissions --tenantId --claimName --claimValue --mappingRuleId --to-user --to-group --to-tenant --to-mapping-rule --from-user --from-group --from-tenant --from-mapping-rule"
233
+ local flags="${flagsStr}"
57
234
 
58
235
  case \${cword} in
59
236
  1)
@@ -64,100 +241,7 @@ _c8ctl_completions() {
64
241
  # Complete resources based on verb
65
242
  local verb="\${words[1]}"
66
243
  case "\${verb}" in
67
- list)
68
- COMPREPLY=( $(compgen -W "\${list_resources}" -- "\${cur}") )
69
- ;;
70
- search)
71
- COMPREPLY=( $(compgen -W "\${search_resources}" -- "\${cur}") )
72
- ;;
73
- get)
74
- COMPREPLY=( $(compgen -W "\${get_resources}" -- "\${cur}") )
75
- ;;
76
- create)
77
- COMPREPLY=( $(compgen -W "\${create_resources}" -- "\${cur}") )
78
- ;;
79
- cancel)
80
- COMPREPLY=( $(compgen -W "\${cancel_resources}" -- "\${cur}") )
81
- ;;
82
- await)
83
- COMPREPLY=( $(compgen -W "\${await_resources}" -- "\${cur}") )
84
- ;;
85
- complete)
86
- COMPREPLY=( $(compgen -W "\${complete_resources}" -- "\${cur}") )
87
- ;;
88
- fail)
89
- COMPREPLY=( $(compgen -W "\${fail_resources}" -- "\${cur}") )
90
- ;;
91
- activate)
92
- COMPREPLY=( $(compgen -W "\${activate_resources}" -- "\${cur}") )
93
- ;;
94
- resolve)
95
- COMPREPLY=( $(compgen -W "\${resolve_resources}" -- "\${cur}") )
96
- ;;
97
- publish)
98
- COMPREPLY=( $(compgen -W "\${publish_resources}" -- "\${cur}") )
99
- ;;
100
- correlate)
101
- COMPREPLY=( $(compgen -W "\${correlate_resources}" -- "\${cur}") )
102
- ;;
103
- delete)
104
- COMPREPLY=( $(compgen -W "\${delete_resources}" -- "\${cur}") )
105
- ;;
106
- assign)
107
- COMPREPLY=( $(compgen -W "\${assign_resources}" -- "\${cur}") )
108
- ;;
109
- unassign)
110
- COMPREPLY=( $(compgen -W "\${unassign_resources}" -- "\${cur}") )
111
- ;;
112
- add)
113
- COMPREPLY=( $(compgen -W "\${add_resources}" -- "\${cur}") )
114
- ;;
115
- remove|rm)
116
- COMPREPLY=( $(compgen -W "\${remove_resources}" -- "\${cur}") )
117
- ;;
118
- load)
119
- COMPREPLY=( $(compgen -W "\${load_resources}" -- "\${cur}") )
120
- ;;
121
- unload)
122
- COMPREPLY=( $(compgen -W "\${unload_resources}" -- "\${cur}") )
123
- ;;
124
- sync)
125
- COMPREPLY=( $(compgen -W "\${sync_resources}" -- "\${cur}") )
126
- ;;
127
- upgrade)
128
- COMPREPLY=( $(compgen -W "\${upgrade_resources}" -- "\${cur}") )
129
- ;;
130
- downgrade)
131
- COMPREPLY=( $(compgen -W "\${downgrade_resources}" -- "\${cur}") )
132
- ;;
133
- init)
134
- COMPREPLY=( $(compgen -W "\${init_resources}" -- "\${cur}") )
135
- ;;
136
- use)
137
- COMPREPLY=( $(compgen -W "\${use_resources}" -- "\${cur}") )
138
- ;;
139
- which)
140
- COMPREPLY=( $(compgen -W "\${which_resources}" -- "\${cur}") )
141
- ;;
142
- output)
143
- COMPREPLY=( $(compgen -W "\${output_resources}" -- "\${cur}") )
144
- ;;
145
- completion)
146
- COMPREPLY=( $(compgen -W "\${completion_resources}" -- "\${cur}") )
147
- ;;
148
- help)
149
- COMPREPLY=( $(compgen -W "\${help_resources}" -- "\${cur}") )
150
- ;;
151
- cluster)
152
- COMPREPLY=( $(compgen -W "\${cluster_resources}" -- "\${cur}") )
153
- ;;
154
- open)
155
- COMPREPLY=( $(compgen -W "\${open_resources}" -- "\${cur}") )
156
- ;;
157
- deploy|run|watch)
158
- # Complete with files
159
- COMPREPLY=( $(compgen -f -- "\${cur}") )
160
- ;;
244
+ ${caseBranches.join("\n")}
161
245
  esac
162
246
  ;;
163
247
  *)
@@ -175,139 +259,59 @@ complete -F _c8ctl_completions c8ctl
175
259
  complete -F _c8ctl_completions c8
176
260
  `;
177
261
  }
178
- /**
179
- * Generate zsh completion script
180
- */
262
+ // ─── Zsh completion ──────────────────────────────────────────────────────────
181
263
  function generateZshCompletion() {
264
+ const pluginCmds = getPluginCommandsInfo();
265
+ const verbInfos = deriveVerbInfos(pluginCmds);
266
+ const allFlags = deriveAllFlags();
267
+ const helpResources = deriveHelpResources();
268
+ // Verb entries: 'verb:description'
269
+ const verbEntries = verbInfos.map((v) => {
270
+ const items = [` '${v.verb}:${escZsh(v.description)}'`];
271
+ for (const a of v.aliases) {
272
+ items.push(` '${a}:${escZsh(v.description)}'`);
273
+ }
274
+ return items.join("\n");
275
+ });
276
+ // Flag entries: '--flag[description]:hint:' or '--flag[description]'
277
+ const flagEntryLines = allFlags.map((f) => {
278
+ const desc = escZsh(f.description);
279
+ if (f.short) {
280
+ return ` '-${f.short}[${desc}]'\n '--${f.name}[${desc}]${f.type === "string" ? `:${f.name}:` : ""}'`;
281
+ }
282
+ return ` '--${f.name}[${desc}]${f.type === "string" ? `:${f.name}:` : ""}'`;
283
+ });
284
+ // Per-verb resource case branches
285
+ const resourceCases = [];
286
+ for (const v of verbInfos) {
287
+ if (v.verb === "help") {
288
+ const entries = helpResources.map((r) => ` '${r.name}:${escZsh(r.description)}'`);
289
+ resourceCases.push(` help)\n resources=(\n${entries.join("\n")}\n )\n _describe 'resource' resources\n ;;`);
290
+ continue;
291
+ }
292
+ if (v.fileComplete) {
293
+ const casePattern = v.aliases.length > 0 ? `${v.verb}|${v.aliases.join("|")}` : v.verb;
294
+ resourceCases.push(` ${casePattern})\n _files\n ;;`);
295
+ continue;
296
+ }
297
+ if (v.resources.length === 0)
298
+ continue;
299
+ const entries = v.resources.map((r) => ` '${r}:${escZsh(capitalize(v.verb))} ${resourceDisplayName(r)}'`);
300
+ const casePattern = v.aliases.length > 0 ? `${v.verb}|${v.aliases.join("|")}` : v.verb;
301
+ resourceCases.push(` ${casePattern})\n resources=(\n${entries.join("\n")}\n )\n _describe 'resource' resources\n ;;`);
302
+ }
182
303
  return `#compdef c8ctl c8
304
+ # c8ctl-completion-version: ${c8ctl.version}
183
305
 
184
306
  _c8ctl() {
185
307
  local -a verbs resources flags
186
308
 
187
309
  verbs=(
188
- 'list:List resources'
189
- 'search:Search resources with filters'
190
- 'get:Get resource by key'
191
- 'create:Create resource'
192
- 'cancel:Cancel resource'
193
- 'await:Await resource completion'
194
- 'complete:Complete resource'
195
- 'fail:Fail a job'
196
- 'activate:Activate jobs by type'
197
- 'resolve:Resolve incident'
198
- 'publish:Publish message'
199
- 'correlate:Correlate message'
200
- 'delete:Delete resource'
201
- 'deploy:Deploy BPMN/DMN/forms'
202
- 'run:Deploy and start process'
203
- 'watch:Watch files for changes and auto-deploy'
204
- 'add:Add a profile'
205
- 'remove:Remove a profile'
206
- 'rm:Remove a profile'
207
- 'load:Load a c8ctl plugin'
208
- 'unload:Unload a c8ctl plugin'
209
- 'sync:Synchronize plugins from registry'
210
- 'upgrade:Upgrade a plugin'
211
- 'downgrade:Downgrade a plugin'
212
- 'init:Create a new plugin from template'
213
- 'assign:Assign a resource to another'
214
- 'unassign:Unassign a resource from another'
215
- 'use:Set active profile or tenant'
216
- 'which:Show active profile or tenant'
217
- 'output:Set output format'
218
- 'open:Open Camunda web application in browser'
219
- 'completion:Generate shell completion script'
220
- 'help:Show help or detailed help for a command'
221
- 'cluster:Manage local Camunda 8 cluster'
222
- 'feedback:Open the feedback page to report issues or request features'
310
+ ${verbEntries.join("\n")}
223
311
  )
224
312
 
225
313
  flags=(
226
- '--help[Show help]'
227
- '-h[Show help]'
228
- '--version[Show version]'
229
- '-v[Show version]'
230
- '--profile[Use specific profile]:profile:'
231
- '--from[Load plugin from URL]:url:'
232
- '--all[Show all results]'
233
- '--bpmnProcessId[Process definition ID]:id:'
234
- '--id[Process definition ID (alias for --bpmnProcessId)]:id:'
235
- '--processInstanceKey[Process instance key]:key:'
236
- '--processDefinitionKey[Process definition key]:key:'
237
- '--parentProcessInstanceKey[Parent process instance key]:key:'
238
- '--variables[JSON variables]:json:'
239
- '--state[Filter by state]:state:'
240
- '--assignee[Filter by assignee]:assignee:'
241
- '--type[Job type]:type:'
242
- '--correlationKey[Message correlation key]:key:'
243
- '--timeToLive[Message TTL in ms]:ttl:'
244
- '--maxJobsToActivate[Maximum jobs to activate]:count:'
245
- '--timeout[Job timeout in ms]:timeout:'
246
- '--worker[Worker name]:name:'
247
- '--retries[Number of retries]:count:'
248
- '--errorMessage[Error message]:message:'
249
- '--baseUrl[Cluster base URL]:url:'
250
- '--clientId[OAuth client ID]:id:'
251
- '--clientSecret[OAuth client secret]:secret:'
252
- '--audience[OAuth audience]:audience:'
253
- '--oAuthUrl[OAuth token endpoint]:url:'
254
- '--defaultTenantId[Default tenant ID]:id:'
255
- '--version[Process definition version]:version:'
256
- '--awaitCompletion[Wait for process instance to complete]'
257
- '--fetchVariables[Comma-separated variable names]:variables:'
258
- '--requestTimeout[Timeout in milliseconds for process completion]:milliseconds:'
259
- '--sortBy[Sort list output by column name]:column:'
260
- '--asc[Sort in ascending order (default)]'
261
- '--desc[Sort in descending order]'
262
- '--limit[Maximum number of items to fetch]:number:'
263
- '--between[Filter by date range (from..to)]:range:'
264
- '--dateField[Date field to filter on with --between]:field:'
265
- '--name[Variable or resource name]:name:'
266
- '--key[Resource key]:key:'
267
- '--elementId[Element ID]:id:'
268
- '--errorType[Error type]:type:'
269
- '--value[Variable value]:value:'
270
- '--scopeKey[Scope key]:key:'
271
- '--fullValue[Return full variable values]'
272
- '--userTask[Get form for a user task]'
273
- '--ut[Get form for a user task (alias for --userTask)]'
274
- '--processDefinition[Get start form for a process definition]'
275
- '--pd[Get start form for a process definition (alias for --processDefinition)]'
276
- '--iname[Case-insensitive name filter]:pattern:'
277
- '--iid[Case-insensitive process definition ID filter]:pattern:'
278
- '--iassignee[Case-insensitive assignee filter]:pattern:'
279
- '--ierrorMessage[Case-insensitive error message filter]:pattern:'
280
- '--itype[Case-insensitive job type filter]:pattern:'
281
- '--ivalue[Case-insensitive variable value filter]:pattern:'
282
- '--fields[Agent: comma-separated output fields to include (reduces context window)]:fields:'
283
- '--dry-run[Agent: preview API request without executing (for mutating commands)]'
284
- '--verbose[Enable SDK trace logging and show full error details]'
285
- '--force[Continue watching after all deployment errors (watch command) or force-remove a limbo plugin (unload plugin)]'
286
- '--none[Clear the active session profile (use profile --none)]'
287
- '--from-file[Create profile from a .env file]:file:_files'
288
- '--from-env[Create profile from current CAMUNDA_* environment variables]'
289
- '--username[Username for identity operations]:username:'
290
- '--email[Email for identity operations]:email:'
291
- '--password[Password for identity operations]:password:'
292
- '--ownerId[Owner ID for authorization]:ownerId:'
293
- '--ownerType[Owner type for authorization]:ownerType:'
294
- '--resourceType[Resource type for authorization]:resourceType:'
295
- '--resourceId[Resource ID for authorization]:resourceId:'
296
- '--permissions[Permissions for authorization]:permissions:'
297
- '--tenantId[Tenant ID]:tenantId:'
298
- '--claimName[Claim name for mapping rule]:claimName:'
299
- '--claimValue[Claim value for mapping rule]:claimValue:'
300
- '--roleId[Role ID for search]:roleId:'
301
- '--groupId[Group ID for search]:groupId:'
302
- '--mappingRuleId[Mapping rule ID]:mappingRuleId:'
303
- '--to-user[Target user for assignment]:user:'
304
- '--to-group[Target group for assignment]:group:'
305
- '--to-tenant[Target tenant for assignment]:tenant:'
306
- '--to-mapping-rule[Target mapping rule for assignment]:mappingRule:'
307
- '--from-user[Source user for unassignment]:user:'
308
- '--from-group[Source group for unassignment]:group:'
309
- '--from-tenant[Source tenant for unassignment]:tenant:'
310
- '--from-mapping-rule[Source mapping rule for unassignment]:mappingRule:'
314
+ ${flagEntryLines.join("\n")}
311
315
  )
312
316
 
313
317
  case $CURRENT in
@@ -316,327 +320,7 @@ _c8ctl() {
316
320
  ;;
317
321
  3)
318
322
  case "\${words[2]}" in
319
- list)
320
- resources=(
321
- 'process-instances:List process instances'
322
- 'process-instance:List process instances'
323
- 'pi:List process instances'
324
- 'user-tasks:List user tasks'
325
- 'user-task:List user tasks'
326
- 'ut:List user tasks'
327
- 'incidents:List incidents'
328
- 'incident:List incidents'
329
- 'inc:List incidents'
330
- 'jobs:List jobs'
331
- 'profiles:List profiles'
332
- 'profile:List profiles'
333
- 'plugins:List plugins'
334
- 'plugin:List plugins'
335
- 'users:List users'
336
- 'user:List users'
337
- 'roles:List roles'
338
- 'role:List roles'
339
- 'groups:List groups'
340
- 'group:List groups'
341
- 'tenants:List tenants'
342
- 'tenant:List tenants'
343
- 'authorizations:List authorizations'
344
- 'authorization:List authorizations'
345
- 'auth:List authorizations'
346
- 'mapping-rules:List mapping rules'
347
- 'mapping-rule:List mapping rules'
348
- 'mr:List mapping rules'
349
- )
350
- _describe 'resource' resources
351
- ;;
352
- search)
353
- resources=(
354
- 'process-instances:Search process instances'
355
- 'process-instance:Search process instances'
356
- 'pi:Search process instances'
357
- 'process-definitions:Search process definitions'
358
- 'process-definition:Search process definitions'
359
- 'pd:Search process definitions'
360
- 'user-tasks:Search user tasks'
361
- 'user-task:Search user tasks'
362
- 'ut:Search user tasks'
363
- 'incidents:Search incidents'
364
- 'incident:Search incidents'
365
- 'inc:Search incidents'
366
- 'jobs:Search jobs'
367
- 'variables:Search variables'
368
- 'variable:Search variables'
369
- 'vars:Search variables'
370
- 'users:Search users'
371
- 'user:Search users'
372
- 'roles:Search roles'
373
- 'role:Search roles'
374
- 'groups:Search groups'
375
- 'group:Search groups'
376
- 'tenants:Search tenants'
377
- 'tenant:Search tenants'
378
- 'authorizations:Search authorizations'
379
- 'authorization:Search authorizations'
380
- 'auth:Search authorizations'
381
- 'mapping-rules:Search mapping rules'
382
- 'mapping-rule:Search mapping rules'
383
- 'mr:Search mapping rules'
384
- )
385
- _describe 'resource' resources
386
- ;;
387
- get)
388
- resources=(
389
- 'process-instance:Get process instance'
390
- 'pi:Get process instance'
391
- 'process-definition:Get process definition'
392
- 'pd:Get process definition'
393
- 'incident:Get incident'
394
- 'inc:Get incident'
395
- 'topology:Get cluster topology'
396
- 'form:Get form for user task or process definition'
397
- 'user:Get user'
398
- 'role:Get role'
399
- 'group:Get group'
400
- 'tenant:Get tenant'
401
- 'authorization:Get authorization'
402
- 'auth:Get authorization'
403
- 'mapping-rule:Get mapping rule'
404
- 'mr:Get mapping rule'
405
- )
406
- _describe 'resource' resources
407
- ;;
408
- create)
409
- resources=(
410
- 'process-instance:Create process instance'
411
- 'pi:Create process instance'
412
- 'user:Create user'
413
- 'role:Create role'
414
- 'group:Create group'
415
- 'tenant:Create tenant'
416
- 'authorization:Create authorization'
417
- 'auth:Create authorization'
418
- 'mapping-rule:Create mapping rule'
419
- 'mr:Create mapping rule'
420
- )
421
- _describe 'resource' resources
422
- ;;
423
- cancel)
424
- resources=(
425
- 'process-instance:Cancel process instance'
426
- 'pi:Cancel process instance'
427
- )
428
- _describe 'resource' resources
429
- ;;
430
- await)
431
- resources=(
432
- 'process-instance:Await process instance completion'
433
- 'pi:Await process instance completion'
434
- )
435
- _describe 'resource' resources
436
- ;;
437
- complete)
438
- resources=(
439
- 'user-task:Complete user task'
440
- 'ut:Complete user task'
441
- 'job:Complete job'
442
- )
443
- _describe 'resource' resources
444
- ;;
445
- fail)
446
- resources=(
447
- 'job:Fail job'
448
- )
449
- _describe 'resource' resources
450
- ;;
451
- activate)
452
- resources=(
453
- 'jobs:Activate jobs'
454
- )
455
- _describe 'resource' resources
456
- ;;
457
- resolve)
458
- resources=(
459
- 'incident:Resolve incident'
460
- 'inc:Resolve incident'
461
- )
462
- _describe 'resource' resources
463
- ;;
464
- publish)
465
- resources=(
466
- 'message:Publish message'
467
- 'msg:Publish message'
468
- )
469
- _describe 'resource' resources
470
- ;;
471
- correlate)
472
- resources=(
473
- 'message:Correlate message'
474
- 'msg:Correlate message'
475
- )
476
- _describe 'resource' resources
477
- ;;
478
- delete)
479
- resources=(
480
- 'user:Delete user'
481
- 'role:Delete role'
482
- 'group:Delete group'
483
- 'tenant:Delete tenant'
484
- 'authorization:Delete authorization'
485
- 'auth:Delete authorization'
486
- 'mapping-rule:Delete mapping rule'
487
- 'mr:Delete mapping rule'
488
- )
489
- _describe 'resource' resources
490
- ;;
491
- assign)
492
- resources=(
493
- 'role:Assign role'
494
- 'user:Assign user'
495
- 'group:Assign group'
496
- 'mapping-rule:Assign mapping rule'
497
- 'mr:Assign mapping rule'
498
- )
499
- _describe 'resource' resources
500
- ;;
501
- unassign)
502
- resources=(
503
- 'role:Unassign role'
504
- 'user:Unassign user'
505
- 'group:Unassign group'
506
- 'mapping-rule:Unassign mapping rule'
507
- 'mr:Unassign mapping rule'
508
- )
509
- _describe 'resource' resources
510
- ;;
511
- add)
512
- resources=(
513
- 'profile:Add profile'
514
- )
515
- _describe 'resource' resources
516
- ;;
517
- remove|rm)
518
- resources=(
519
- 'profile:Remove profile'
520
- )
521
- _describe 'resource' resources
522
- ;;
523
- load)
524
- resources=(
525
- 'plugin:Load plugin'
526
- )
527
- _describe 'resource' resources
528
- ;;
529
- unload)
530
- resources=(
531
- 'plugin:Unload plugin'
532
- )
533
- _describe 'resource' resources
534
- ;;
535
- sync)
536
- resources=(
537
- 'plugin:Synchronize plugin'
538
- 'plugins:Synchronize plugins'
539
- )
540
- _describe 'resource' resources
541
- ;;
542
- upgrade)
543
- resources=(
544
- 'plugin:Upgrade plugin'
545
- )
546
- _describe 'resource' resources
547
- ;;
548
- downgrade)
549
- resources=(
550
- 'plugin:Downgrade plugin'
551
- )
552
- _describe 'resource' resources
553
- ;;
554
- init)
555
- resources=(
556
- 'plugin:Create new plugin from template'
557
- )
558
- _describe 'resource' resources
559
- ;;
560
- use)
561
- resources=(
562
- 'profile:Set active profile'
563
- 'tenant:Set active tenant'
564
- )
565
- _describe 'resource' resources
566
- ;;
567
- which)
568
- resources=(
569
- 'profile:Show active profile'
570
- )
571
- _describe 'resource' resources
572
- ;;
573
- output)
574
- resources=(
575
- 'json:JSON output'
576
- 'text:Text output'
577
- )
578
- _describe 'resource' resources
579
- ;;
580
- completion)
581
- resources=(
582
- 'bash:Generate bash completion'
583
- 'zsh:Generate zsh completion'
584
- 'fish:Generate fish completion'
585
- )
586
- _describe 'resource' resources
587
- ;;
588
- help)
589
- resources=(
590
- 'list:Show list command help'
591
- 'get:Show get command help'
592
- 'create:Show create command help'
593
- 'complete:Show complete command help'
594
- 'await:Show await command help'
595
- 'search:Show search command help'
596
- 'deploy:Show deploy command help'
597
- 'run:Show run command help'
598
- 'watch:Show watch command help'
599
- 'open:Show open command help'
600
- 'cancel:Show cancel command help'
601
- 'resolve:Show resolve command help'
602
- 'fail:Show fail command help'
603
- 'activate:Show activate command help'
604
- 'publish:Show publish command help'
605
- 'correlate:Show correlate command help'
606
- 'delete:Show delete command help'
607
- 'assign:Show assign command help'
608
- 'unassign:Show unassign command help'
609
- 'upgrade:Show upgrade command help'
610
- 'downgrade:Show downgrade command help'
611
- 'init:Show init command help'
612
- 'profiles:Show profile management help'
613
- 'profile:Alias for profile management help'
614
- 'plugin:Show plugin management help'
615
- 'plugins:Alias for plugin management help'
616
- 'cluster:No detailed help; use c8ctl help for general usage'
617
- 'feedback:Show feedback command help'
618
- )
619
- _describe 'resource' resources
620
- ;;
621
- cluster)
622
- resources=(
623
- 'start:Start local Camunda 8 cluster'
624
- 'stop:Stop local Camunda 8 cluster'
625
- )
626
- _describe 'resource' resources
627
- ;;
628
- open)
629
- resources=(
630
- 'operate:Open Camunda Operate'
631
- 'tasklist:Open Camunda Tasklist'
632
- 'modeler:Open Camunda Web Modeler'
633
- 'optimize:Open Camunda Optimize'
634
- )
635
- _describe 'resource' resources
636
- ;;
637
- deploy|run|watch)
638
- _files
639
- ;;
323
+ ${resourceCases.join("\n")}
640
324
  esac
641
325
  ;;
642
326
  *)
@@ -645,658 +329,94 @@ _c8ctl() {
645
329
  esac
646
330
  }
647
331
 
648
- # compdef is handled by the #compdef directive at the top
332
+ if (( $+functions[compdef] )); then
333
+ compdef _c8ctl c8ctl c8
334
+ fi
649
335
  `;
650
336
  }
651
- /**
652
- * Generate fish completion script
653
- */
337
+ // ─── Fish completion ─────────────────────────────────────────────────────────
654
338
  function generateFishCompletion() {
655
- return `# c8ctl fish completion
656
-
657
- # Remove all existing completions for c8ctl and c8
658
- complete -c c8ctl -e
659
- complete -c c8 -e
660
-
661
- # Global flags
662
- complete -c c8ctl -s h -l help -d 'Show help'
663
- complete -c c8 -s h -l help -d 'Show help'
664
- complete -c c8ctl -s v -l version -d 'Show version'
665
- complete -c c8 -s v -l version -d 'Show version'
666
- complete -c c8ctl -l profile -d 'Use specific profile' -r
667
- complete -c c8 -l profile -d 'Use specific profile' -r
668
- complete -c c8ctl -l from -d 'Load plugin from URL' -r
669
- complete -c c8 -l from -d 'Load plugin from URL' -r
670
- complete -c c8ctl -l all -d 'Show all results'
671
- complete -c c8 -l all -d 'Show all results'
672
- complete -c c8ctl -l bpmnProcessId -d 'Process definition ID' -r
673
- complete -c c8 -l bpmnProcessId -d 'Process definition ID' -r
674
- complete -c c8ctl -l id -d 'Process definition ID (alias for --bpmnProcessId)' -r
675
- complete -c c8 -l id -d 'Process definition ID (alias for --bpmnProcessId)' -r
676
- complete -c c8ctl -l processInstanceKey -d 'Process instance key' -r
677
- complete -c c8 -l processInstanceKey -d 'Process instance key' -r
678
- complete -c c8ctl -l processDefinitionKey -d 'Process definition key' -r
679
- complete -c c8 -l processDefinitionKey -d 'Process definition key' -r
680
- complete -c c8ctl -l parentProcessInstanceKey -d 'Parent process instance key' -r
681
- complete -c c8 -l parentProcessInstanceKey -d 'Parent process instance key' -r
682
- complete -c c8ctl -l variables -d 'JSON variables' -r
683
- complete -c c8 -l variables -d 'JSON variables' -r
684
- complete -c c8ctl -l state -d 'Filter by state' -r
685
- complete -c c8 -l state -d 'Filter by state' -r
686
- complete -c c8ctl -l assignee -d 'Filter by assignee' -r
687
- complete -c c8 -l assignee -d 'Filter by assignee' -r
688
- complete -c c8ctl -l type -d 'Job type' -r
689
- complete -c c8 -l type -d 'Job type' -r
690
- complete -c c8ctl -l correlationKey -d 'Message correlation key' -r
691
- complete -c c8 -l correlationKey -d 'Message correlation key' -r
692
- complete -c c8ctl -l timeToLive -d 'Message TTL in ms' -r
693
- complete -c c8 -l timeToLive -d 'Message TTL in ms' -r
694
- complete -c c8ctl -l maxJobsToActivate -d 'Maximum jobs to activate' -r
695
- complete -c c8 -l maxJobsToActivate -d 'Maximum jobs to activate' -r
696
- complete -c c8ctl -l timeout -d 'Job timeout in ms' -r
697
- complete -c c8 -l timeout -d 'Job timeout in ms' -r
698
- complete -c c8ctl -l worker -d 'Worker name' -r
699
- complete -c c8 -l worker -d 'Worker name' -r
700
- complete -c c8ctl -l retries -d 'Number of retries' -r
701
- complete -c c8 -l retries -d 'Number of retries' -r
702
- complete -c c8ctl -l errorMessage -d 'Error message' -r
703
- complete -c c8 -l errorMessage -d 'Error message' -r
704
- complete -c c8ctl -l baseUrl -d 'Cluster base URL' -r
705
- complete -c c8 -l baseUrl -d 'Cluster base URL' -r
706
- complete -c c8ctl -l clientId -d 'OAuth client ID' -r
707
- complete -c c8 -l clientId -d 'OAuth client ID' -r
708
- complete -c c8ctl -l clientSecret -d 'OAuth client secret' -r
709
- complete -c c8 -l clientSecret -d 'OAuth client secret' -r
710
- complete -c c8ctl -l audience -d 'OAuth audience' -r
711
- complete -c c8 -l audience -d 'OAuth audience' -r
712
- complete -c c8ctl -l oAuthUrl -d 'OAuth token endpoint' -r
713
- complete -c c8 -l oAuthUrl -d 'OAuth token endpoint' -r
714
- complete -c c8ctl -l defaultTenantId -d 'Default tenant ID' -r
715
- complete -c c8 -l defaultTenantId -d 'Default tenant ID' -r
716
- complete -c c8ctl -l version -d 'Process definition version' -r
717
- complete -c c8 -l version -d 'Process definition version' -r
718
- complete -c c8ctl -l awaitCompletion -d 'Wait for process instance to complete'
719
- complete -c c8 -l awaitCompletion -d 'Wait for process instance to complete'
720
- complete -c c8ctl -l fetchVariables -d 'Comma-separated variable names' -r
721
- complete -c c8 -l fetchVariables -d 'Comma-separated variable names' -r
722
- complete -c c8ctl -l requestTimeout -d 'Timeout in milliseconds for process completion' -r
723
- complete -c c8 -l requestTimeout -d 'Timeout in milliseconds for process completion' -r
724
- complete -c c8ctl -l sortBy -d 'Sort list output by column name' -r
725
- complete -c c8 -l sortBy -d 'Sort list output by column name' -r
726
- complete -c c8ctl -l asc -d 'Sort in ascending order (default)'
727
- complete -c c8 -l asc -d 'Sort in ascending order (default)'
728
- complete -c c8ctl -l desc -d 'Sort in descending order'
729
- complete -c c8 -l desc -d 'Sort in descending order'
730
- complete -c c8ctl -l limit -d 'Maximum number of items to fetch' -r
731
- complete -c c8 -l limit -d 'Maximum number of items to fetch' -r
732
- complete -c c8ctl -l between -d 'Filter by date range (from..to)' -r
733
- complete -c c8 -l between -d 'Filter by date range (from..to)' -r
734
- complete -c c8ctl -l dateField -d 'Date field to filter on with --between' -r
735
- complete -c c8 -l dateField -d 'Date field to filter on with --between' -r
736
- complete -c c8ctl -l name -d 'Variable or resource name' -r
737
- complete -c c8 -l name -d 'Variable or resource name' -r
738
- complete -c c8ctl -l key -d 'Resource key' -r
739
- complete -c c8 -l key -d 'Resource key' -r
740
- complete -c c8ctl -l elementId -d 'Element ID' -r
741
- complete -c c8 -l elementId -d 'Element ID' -r
742
- complete -c c8ctl -l errorType -d 'Error type' -r
743
- complete -c c8 -l errorType -d 'Error type' -r
744
- complete -c c8ctl -l value -d 'Variable value' -r
745
- complete -c c8 -l value -d 'Variable value' -r
746
- complete -c c8ctl -l scopeKey -d 'Scope key' -r
747
- complete -c c8 -l scopeKey -d 'Scope key' -r
748
- complete -c c8ctl -l fullValue -d 'Return full variable values'
749
- complete -c c8 -l fullValue -d 'Return full variable values'
750
- complete -c c8ctl -l userTask -d 'Get form for a user task'
751
- complete -c c8 -l userTask -d 'Get form for a user task'
752
- complete -c c8ctl -l ut -d 'Get form for a user task (alias for --userTask)'
753
- complete -c c8 -l ut -d 'Get form for a user task (alias for --userTask)'
754
- complete -c c8ctl -l processDefinition -d 'Get start form for a process definition'
755
- complete -c c8 -l processDefinition -d 'Get start form for a process definition'
756
- complete -c c8ctl -l pd -d 'Get start form for a process definition (alias for --processDefinition)'
757
- complete -c c8 -l pd -d 'Get start form for a process definition (alias for --processDefinition)'
758
- complete -c c8ctl -l iname -d 'Case-insensitive name filter' -r
759
- complete -c c8 -l iname -d 'Case-insensitive name filter' -r
760
- complete -c c8ctl -l iid -d 'Case-insensitive process definition ID filter' -r
761
- complete -c c8 -l iid -d 'Case-insensitive process definition ID filter' -r
762
- complete -c c8ctl -l iassignee -d 'Case-insensitive assignee filter' -r
763
- complete -c c8 -l iassignee -d 'Case-insensitive assignee filter' -r
764
- complete -c c8ctl -l ierrorMessage -d 'Case-insensitive error message filter' -r
765
- complete -c c8 -l ierrorMessage -d 'Case-insensitive error message filter' -r
766
- complete -c c8ctl -l itype -d 'Case-insensitive job type filter' -r
767
- complete -c c8 -l itype -d 'Case-insensitive job type filter' -r
768
- complete -c c8ctl -l ivalue -d 'Case-insensitive variable value filter' -r
769
- complete -c c8 -l ivalue -d 'Case-insensitive variable value filter' -r
770
- complete -c c8ctl -l fields -d 'Agent: comma-separated output fields to include' -r
771
- complete -c c8 -l fields -d 'Agent: comma-separated output fields to include' -r
772
- complete -c c8ctl -l dry-run -d 'Agent: preview API request without executing'
773
- complete -c c8 -l dry-run -d 'Agent: preview API request without executing'
774
- complete -c c8ctl -l verbose -d 'Enable SDK trace logging and show full error details'
775
- complete -c c8 -l verbose -d 'Enable SDK trace logging and show full error details'
776
- complete -c c8ctl -l force -d 'Continue watching after all deployment errors or force-remove a limbo plugin'
777
- complete -c c8 -l force -d 'Continue watching after all deployment errors or force-remove a limbo plugin'
778
- complete -c c8ctl -l none -d 'Clear the active session profile'
779
- complete -c c8 -l none -d 'Clear the active session profile'
780
- complete -c c8ctl -l from-file -r -d 'Create profile from a .env file'
781
- complete -c c8 -l from-file -r -d 'Create profile from a .env file'
782
- complete -c c8ctl -l from-env -d 'Create profile from current environment variables'
783
- complete -c c8 -l from-env -d 'Create profile from current environment variables'
784
- complete -c c8ctl -l username -d 'Username for identity operations' -r
785
- complete -c c8 -l username -d 'Username for identity operations' -r
786
- complete -c c8ctl -l email -d 'Email for identity operations' -r
787
- complete -c c8 -l email -d 'Email for identity operations' -r
788
- complete -c c8ctl -l password -d 'Password for identity operations' -r
789
- complete -c c8 -l password -d 'Password for identity operations' -r
790
- complete -c c8ctl -l ownerId -d 'Owner ID for authorization' -r
791
- complete -c c8 -l ownerId -d 'Owner ID for authorization' -r
792
- complete -c c8ctl -l ownerType -d 'Owner type for authorization' -r
793
- complete -c c8 -l ownerType -d 'Owner type for authorization' -r
794
- complete -c c8ctl -l resourceType -d 'Resource type for authorization' -r
795
- complete -c c8 -l resourceType -d 'Resource type for authorization' -r
796
- complete -c c8ctl -l resourceId -d 'Resource ID for authorization' -r
797
- complete -c c8 -l resourceId -d 'Resource ID for authorization' -r
798
- complete -c c8ctl -l permissions -d 'Permissions for authorization' -r
799
- complete -c c8 -l permissions -d 'Permissions for authorization' -r
800
- complete -c c8ctl -l tenantId -d 'Tenant ID' -r
801
- complete -c c8 -l tenantId -d 'Tenant ID' -r
802
- complete -c c8ctl -l claimName -d 'Claim name for mapping rule' -r
803
- complete -c c8 -l claimName -d 'Claim name for mapping rule' -r
804
- complete -c c8ctl -l claimValue -d 'Claim value for mapping rule' -r
805
- complete -c c8 -l claimValue -d 'Claim value for mapping rule' -r
806
- complete -c c8ctl -l roleId -d 'Role ID for search' -r
807
- complete -c c8 -l roleId -d 'Role ID for search' -r
808
- complete -c c8ctl -l groupId -d 'Group ID for search' -r
809
- complete -c c8 -l groupId -d 'Group ID for search' -r
810
- complete -c c8ctl -l mappingRuleId -d 'Mapping rule ID' -r
811
- complete -c c8 -l mappingRuleId -d 'Mapping rule ID' -r
812
- complete -c c8ctl -l to-user -d 'Target user for assignment' -r
813
- complete -c c8 -l to-user -d 'Target user for assignment' -r
814
- complete -c c8ctl -l to-group -d 'Target group for assignment' -r
815
- complete -c c8 -l to-group -d 'Target group for assignment' -r
816
- complete -c c8ctl -l to-tenant -d 'Target tenant for assignment' -r
817
- complete -c c8 -l to-tenant -d 'Target tenant for assignment' -r
818
- complete -c c8ctl -l to-mapping-rule -d 'Target mapping rule for assignment' -r
819
- complete -c c8 -l to-mapping-rule -d 'Target mapping rule for assignment' -r
820
- complete -c c8ctl -l from-user -d 'Source user for unassignment' -r
821
- complete -c c8 -l from-user -d 'Source user for unassignment' -r
822
- complete -c c8ctl -l from-group -d 'Source group for unassignment' -r
823
- complete -c c8 -l from-group -d 'Source group for unassignment' -r
824
- complete -c c8ctl -l from-tenant -d 'Source tenant for unassignment' -r
825
- complete -c c8 -l from-tenant -d 'Source tenant for unassignment' -r
826
- complete -c c8ctl -l from-mapping-rule -d 'Source mapping rule for unassignment' -r
827
- complete -c c8 -l from-mapping-rule -d 'Source mapping rule for unassignment' -r
828
-
829
- # Commands (verbs) - only suggest when no command is given yet
830
- complete -c c8ctl -n '__fish_use_subcommand' -a 'list' -d 'List resources'
831
- complete -c c8 -n '__fish_use_subcommand' -a 'list' -d 'List resources'
832
- complete -c c8ctl -n '__fish_use_subcommand' -a 'search' -d 'Search resources with filters'
833
- complete -c c8 -n '__fish_use_subcommand' -a 'search' -d 'Search resources with filters'
834
- complete -c c8ctl -n '__fish_use_subcommand' -a 'get' -d 'Get resource by key'
835
- complete -c c8 -n '__fish_use_subcommand' -a 'get' -d 'Get resource by key'
836
- complete -c c8ctl -n '__fish_use_subcommand' -a 'create' -d 'Create resource'
837
- complete -c c8 -n '__fish_use_subcommand' -a 'create' -d 'Create resource'
838
- complete -c c8ctl -n '__fish_use_subcommand' -a 'delete' -d 'Delete resource'
839
- complete -c c8 -n '__fish_use_subcommand' -a 'delete' -d 'Delete resource'
840
- complete -c c8ctl -n '__fish_use_subcommand' -a 'cancel' -d 'Cancel resource'
841
- complete -c c8 -n '__fish_use_subcommand' -a 'cancel' -d 'Cancel resource'
842
- complete -c c8ctl -n '__fish_use_subcommand' -a 'await' -d 'Await resource completion'
843
- complete -c c8 -n '__fish_use_subcommand' -a 'await' -d 'Await resource completion'
844
- complete -c c8ctl -n '__fish_use_subcommand' -a 'complete' -d 'Complete resource'
845
- complete -c c8 -n '__fish_use_subcommand' -a 'complete' -d 'Complete resource'
846
- complete -c c8ctl -n '__fish_use_subcommand' -a 'fail' -d 'Fail a job'
847
- complete -c c8 -n '__fish_use_subcommand' -a 'fail' -d 'Fail a job'
848
- complete -c c8ctl -n '__fish_use_subcommand' -a 'activate' -d 'Activate jobs by type'
849
- complete -c c8 -n '__fish_use_subcommand' -a 'activate' -d 'Activate jobs by type'
850
- complete -c c8ctl -n '__fish_use_subcommand' -a 'resolve' -d 'Resolve incident'
851
- complete -c c8 -n '__fish_use_subcommand' -a 'resolve' -d 'Resolve incident'
852
- complete -c c8ctl -n '__fish_use_subcommand' -a 'publish' -d 'Publish message'
853
- complete -c c8 -n '__fish_use_subcommand' -a 'publish' -d 'Publish message'
854
- complete -c c8ctl -n '__fish_use_subcommand' -a 'correlate' -d 'Correlate message'
855
- complete -c c8 -n '__fish_use_subcommand' -a 'correlate' -d 'Correlate message'
856
- complete -c c8ctl -n '__fish_use_subcommand' -a 'deploy' -d 'Deploy BPMN/DMN/forms'
857
- complete -c c8 -n '__fish_use_subcommand' -a 'deploy' -d 'Deploy BPMN/DMN/forms'
858
- complete -c c8ctl -n '__fish_use_subcommand' -a 'run' -d 'Deploy and start process'
859
- complete -c c8 -n '__fish_use_subcommand' -a 'run' -d 'Deploy and start process'
860
- complete -c c8ctl -n '__fish_use_subcommand' -a 'watch' -d 'Watch files and auto-deploy'
861
- complete -c c8 -n '__fish_use_subcommand' -a 'watch' -d 'Watch files and auto-deploy'
862
- complete -c c8ctl -n '__fish_use_subcommand' -a 'open' -d 'Open Camunda web application in browser'
863
- complete -c c8 -n '__fish_use_subcommand' -a 'open' -d 'Open Camunda web application in browser'
864
- complete -c c8ctl -n '__fish_use_subcommand' -a 'add' -d 'Add a profile'
865
- complete -c c8 -n '__fish_use_subcommand' -a 'add' -d 'Add a profile'
866
- complete -c c8ctl -n '__fish_use_subcommand' -a 'remove' -d 'Remove a profile'
867
- complete -c c8 -n '__fish_use_subcommand' -a 'remove' -d 'Remove a profile'
868
- complete -c c8ctl -n '__fish_use_subcommand' -a 'rm' -d 'Remove a profile'
869
- complete -c c8 -n '__fish_use_subcommand' -a 'rm' -d 'Remove a profile'
870
- complete -c c8ctl -n '__fish_use_subcommand' -a 'load' -d 'Load a c8ctl plugin'
871
- complete -c c8 -n '__fish_use_subcommand' -a 'load' -d 'Load a c8ctl plugin'
872
- complete -c c8ctl -n '__fish_use_subcommand' -a 'unload' -d 'Unload a c8ctl plugin'
873
- complete -c c8 -n '__fish_use_subcommand' -a 'unload' -d 'Unload a c8ctl plugin'
874
- complete -c c8ctl -n '__fish_use_subcommand' -a 'sync' -d 'Synchronize plugins from registry'
875
- complete -c c8 -n '__fish_use_subcommand' -a 'sync' -d 'Synchronize plugins from registry'
876
- complete -c c8ctl -n '__fish_use_subcommand' -a 'upgrade' -d 'Upgrade a plugin'
877
- complete -c c8 -n '__fish_use_subcommand' -a 'upgrade' -d 'Upgrade a plugin'
878
- complete -c c8ctl -n '__fish_use_subcommand' -a 'downgrade' -d 'Downgrade a plugin'
879
- complete -c c8 -n '__fish_use_subcommand' -a 'downgrade' -d 'Downgrade a plugin'
880
- complete -c c8ctl -n '__fish_use_subcommand' -a 'init' -d 'Create a new plugin from template'
881
- complete -c c8 -n '__fish_use_subcommand' -a 'init' -d 'Create a new plugin from template'
882
- complete -c c8ctl -n '__fish_use_subcommand' -a 'assign' -d 'Assign a resource to another'
883
- complete -c c8 -n '__fish_use_subcommand' -a 'assign' -d 'Assign a resource to another'
884
- complete -c c8ctl -n '__fish_use_subcommand' -a 'unassign' -d 'Unassign a resource from another'
885
- complete -c c8 -n '__fish_use_subcommand' -a 'unassign' -d 'Unassign a resource from another'
886
- complete -c c8ctl -n '__fish_use_subcommand' -a 'use' -d 'Set active profile or tenant'
887
- complete -c c8 -n '__fish_use_subcommand' -a 'use' -d 'Set active profile or tenant'
888
- complete -c c8ctl -n '__fish_use_subcommand' -a 'which' -d 'Show active profile'
889
- complete -c c8 -n '__fish_use_subcommand' -a 'which' -d 'Show active profile'
890
- complete -c c8ctl -n '__fish_use_subcommand' -a 'output' -d 'Set output format'
891
- complete -c c8 -n '__fish_use_subcommand' -a 'output' -d 'Set output format'
892
- complete -c c8ctl -n '__fish_use_subcommand' -a 'help' -d 'Show help or detailed help for a command'
893
- complete -c c8 -n '__fish_use_subcommand' -a 'help' -d 'Show help or detailed help for a command'
894
- complete -c c8ctl -n '__fish_use_subcommand' -a 'completion' -d 'Generate shell completion script'
895
- complete -c c8 -n '__fish_use_subcommand' -a 'completion' -d 'Generate shell completion script'
896
- complete -c c8ctl -n '__fish_use_subcommand' -a 'cluster' -d 'Manage local Camunda 8 cluster'
897
- complete -c c8 -n '__fish_use_subcommand' -a 'cluster' -d 'Manage local Camunda 8 cluster'
898
- complete -c c8ctl -n '__fish_use_subcommand' -a 'feedback' -d 'Open the feedback page to report issues or request features'
899
- complete -c c8 -n '__fish_use_subcommand' -a 'feedback' -d 'Open the feedback page to report issues or request features'
900
-
901
- # Resources for 'list' command
902
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'process-instances' -d 'List process instances'
903
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'process-instances' -d 'List process instances'
904
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'process-instance' -d 'List process instances'
905
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'process-instance' -d 'List process instances'
906
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'pi' -d 'List process instances'
907
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'pi' -d 'List process instances'
908
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'user-tasks' -d 'List user tasks'
909
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'user-tasks' -d 'List user tasks'
910
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'user-task' -d 'List user tasks'
911
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'user-task' -d 'List user tasks'
912
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'ut' -d 'List user tasks'
913
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'ut' -d 'List user tasks'
914
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'incidents' -d 'List incidents'
915
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'incidents' -d 'List incidents'
916
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'incident' -d 'List incidents'
917
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'incident' -d 'List incidents'
918
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'inc' -d 'List incidents'
919
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'inc' -d 'List incidents'
920
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'jobs' -d 'List jobs'
921
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'jobs' -d 'List jobs'
922
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'profiles' -d 'List profiles'
923
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'profiles' -d 'List profiles'
924
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'profile' -d 'List profiles'
925
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'profile' -d 'List profiles'
926
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'plugins' -d 'List plugins'
927
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'plugins' -d 'List plugins'
928
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'plugin' -d 'List plugins'
929
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'plugin' -d 'List plugins'
930
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'users' -d 'List users'
931
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'users' -d 'List users'
932
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'user' -d 'List users'
933
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'user' -d 'List users'
934
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'roles' -d 'List roles'
935
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'roles' -d 'List roles'
936
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'role' -d 'List roles'
937
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'role' -d 'List roles'
938
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'groups' -d 'List groups'
939
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'groups' -d 'List groups'
940
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'group' -d 'List groups'
941
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'group' -d 'List groups'
942
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'tenants' -d 'List tenants'
943
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'tenants' -d 'List tenants'
944
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'tenant' -d 'List tenants'
945
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'tenant' -d 'List tenants'
946
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'authorizations' -d 'List authorizations'
947
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'authorizations' -d 'List authorizations'
948
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'authorization' -d 'List authorizations'
949
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'authorization' -d 'List authorizations'
950
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'auth' -d 'List authorizations'
951
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'auth' -d 'List authorizations'
952
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'mapping-rules' -d 'List mapping rules'
953
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'mapping-rules' -d 'List mapping rules'
954
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'mapping-rule' -d 'List mapping rules'
955
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'mapping-rule' -d 'List mapping rules'
956
- complete -c c8ctl -n '__fish_seen_subcommand_from list' -a 'mr' -d 'List mapping rules'
957
- complete -c c8 -n '__fish_seen_subcommand_from list' -a 'mr' -d 'List mapping rules'
958
-
959
- # Resources for 'search' command
960
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'process-instances' -d 'Search process instances'
961
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'process-instances' -d 'Search process instances'
962
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'process-instance' -d 'Search process instances'
963
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'process-instance' -d 'Search process instances'
964
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'pi' -d 'Search process instances'
965
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'pi' -d 'Search process instances'
966
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'process-definitions' -d 'Search process definitions'
967
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'process-definitions' -d 'Search process definitions'
968
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'process-definition' -d 'Search process definitions'
969
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'process-definition' -d 'Search process definitions'
970
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'pd' -d 'Search process definitions'
971
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'pd' -d 'Search process definitions'
972
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'user-tasks' -d 'Search user tasks'
973
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'user-tasks' -d 'Search user tasks'
974
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'user-task' -d 'Search user tasks'
975
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'user-task' -d 'Search user tasks'
976
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'ut' -d 'Search user tasks'
977
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'ut' -d 'Search user tasks'
978
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'incidents' -d 'Search incidents'
979
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'incidents' -d 'Search incidents'
980
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'incident' -d 'Search incidents'
981
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'incident' -d 'Search incidents'
982
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'inc' -d 'Search incidents'
983
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'inc' -d 'Search incidents'
984
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'jobs' -d 'Search jobs'
985
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'jobs' -d 'Search jobs'
986
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'variables' -d 'Search variables'
987
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'variables' -d 'Search variables'
988
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'variable' -d 'Search variables'
989
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'variable' -d 'Search variables'
990
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'vars' -d 'Search variables'
991
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'vars' -d 'Search variables'
992
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'users' -d 'Search users'
993
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'users' -d 'Search users'
994
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'user' -d 'Search users'
995
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'user' -d 'Search users'
996
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'roles' -d 'Search roles'
997
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'roles' -d 'Search roles'
998
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'role' -d 'Search roles'
999
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'role' -d 'Search roles'
1000
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'groups' -d 'Search groups'
1001
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'groups' -d 'Search groups'
1002
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'group' -d 'Search groups'
1003
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'group' -d 'Search groups'
1004
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'tenants' -d 'Search tenants'
1005
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'tenants' -d 'Search tenants'
1006
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'tenant' -d 'Search tenants'
1007
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'tenant' -d 'Search tenants'
1008
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'authorizations' -d 'Search authorizations'
1009
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'authorizations' -d 'Search authorizations'
1010
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'authorization' -d 'Search authorizations'
1011
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'authorization' -d 'Search authorizations'
1012
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'auth' -d 'Search authorizations'
1013
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'auth' -d 'Search authorizations'
1014
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'mapping-rules' -d 'Search mapping rules'
1015
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'mapping-rules' -d 'Search mapping rules'
1016
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'mapping-rule' -d 'Search mapping rules'
1017
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'mapping-rule' -d 'Search mapping rules'
1018
- complete -c c8ctl -n '__fish_seen_subcommand_from search' -a 'mr' -d 'Search mapping rules'
1019
- complete -c c8 -n '__fish_seen_subcommand_from search' -a 'mr' -d 'Search mapping rules'
1020
-
1021
- # Resources for 'get' command
1022
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'process-instance' -d 'Get process instance'
1023
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'process-instance' -d 'Get process instance'
1024
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'pi' -d 'Get process instance'
1025
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'pi' -d 'Get process instance'
1026
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'process-definition' -d 'Get process definition'
1027
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'process-definition' -d 'Get process definition'
1028
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'pd' -d 'Get process definition'
1029
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'pd' -d 'Get process definition'
1030
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'incident' -d 'Get incident'
1031
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'incident' -d 'Get incident'
1032
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'inc' -d 'Get incident'
1033
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'inc' -d 'Get incident'
1034
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'topology' -d 'Get cluster topology'
1035
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'topology' -d 'Get cluster topology'
1036
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'form' -d 'Get form for user task or process definition'
1037
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'form' -d 'Get form for user task or process definition'
1038
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'user' -d 'Get user'
1039
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'user' -d 'Get user'
1040
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'role' -d 'Get role'
1041
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'role' -d 'Get role'
1042
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'group' -d 'Get group'
1043
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'group' -d 'Get group'
1044
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'tenant' -d 'Get tenant'
1045
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'tenant' -d 'Get tenant'
1046
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'authorization' -d 'Get authorization'
1047
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'authorization' -d 'Get authorization'
1048
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'auth' -d 'Get authorization'
1049
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'auth' -d 'Get authorization'
1050
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'mapping-rule' -d 'Get mapping rule'
1051
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'mapping-rule' -d 'Get mapping rule'
1052
- complete -c c8ctl -n '__fish_seen_subcommand_from get' -a 'mr' -d 'Get mapping rule'
1053
- complete -c c8 -n '__fish_seen_subcommand_from get' -a 'mr' -d 'Get mapping rule'
1054
-
1055
- # Resources for 'create' command
1056
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'process-instance' -d 'Create process instance'
1057
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'process-instance' -d 'Create process instance'
1058
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'pi' -d 'Create process instance'
1059
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'pi' -d 'Create process instance'
1060
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'user' -d 'Create user'
1061
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'user' -d 'Create user'
1062
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'role' -d 'Create role'
1063
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'role' -d 'Create role'
1064
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'group' -d 'Create group'
1065
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'group' -d 'Create group'
1066
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'tenant' -d 'Create tenant'
1067
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'tenant' -d 'Create tenant'
1068
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'authorization' -d 'Create authorization'
1069
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'authorization' -d 'Create authorization'
1070
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'auth' -d 'Create authorization'
1071
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'auth' -d 'Create authorization'
1072
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'mapping-rule' -d 'Create mapping rule'
1073
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'mapping-rule' -d 'Create mapping rule'
1074
- complete -c c8ctl -n '__fish_seen_subcommand_from create' -a 'mr' -d 'Create mapping rule'
1075
- complete -c c8 -n '__fish_seen_subcommand_from create' -a 'mr' -d 'Create mapping rule'
1076
-
1077
- # Resources for 'cancel' command
1078
- complete -c c8ctl -n '__fish_seen_subcommand_from cancel' -a 'process-instance' -d 'Cancel process instance'
1079
- complete -c c8 -n '__fish_seen_subcommand_from cancel' -a 'process-instance' -d 'Cancel process instance'
1080
- complete -c c8ctl -n '__fish_seen_subcommand_from cancel' -a 'pi' -d 'Cancel process instance'
1081
- complete -c c8 -n '__fish_seen_subcommand_from cancel' -a 'pi' -d 'Cancel process instance'
1082
-
1083
- # Resources for 'await' command
1084
- complete -c c8ctl -n '__fish_seen_subcommand_from await' -a 'process-instance' -d 'Await process instance completion'
1085
- complete -c c8 -n '__fish_seen_subcommand_from await' -a 'process-instance' -d 'Await process instance completion'
1086
- complete -c c8ctl -n '__fish_seen_subcommand_from await' -a 'pi' -d 'Await process instance completion'
1087
- complete -c c8 -n '__fish_seen_subcommand_from await' -a 'pi' -d 'Await process instance completion'
1088
-
1089
- # Resources for 'complete' command
1090
- complete -c c8ctl -n '__fish_seen_subcommand_from complete' -a 'user-task' -d 'Complete user task'
1091
- complete -c c8 -n '__fish_seen_subcommand_from complete' -a 'user-task' -d 'Complete user task'
1092
- complete -c c8ctl -n '__fish_seen_subcommand_from complete' -a 'ut' -d 'Complete user task'
1093
- complete -c c8 -n '__fish_seen_subcommand_from complete' -a 'ut' -d 'Complete user task'
1094
- complete -c c8ctl -n '__fish_seen_subcommand_from complete' -a 'job' -d 'Complete job'
1095
- complete -c c8 -n '__fish_seen_subcommand_from complete' -a 'job' -d 'Complete job'
1096
-
1097
- # Resources for 'fail' command
1098
- complete -c c8ctl -n '__fish_seen_subcommand_from fail' -a 'job' -d 'Fail job'
1099
- complete -c c8 -n '__fish_seen_subcommand_from fail' -a 'job' -d 'Fail job'
1100
-
1101
- # Resources for 'activate' command
1102
- complete -c c8ctl -n '__fish_seen_subcommand_from activate' -a 'jobs' -d 'Activate jobs'
1103
- complete -c c8 -n '__fish_seen_subcommand_from activate' -a 'jobs' -d 'Activate jobs'
1104
-
1105
- # Resources for 'resolve' command
1106
- complete -c c8ctl -n '__fish_seen_subcommand_from resolve' -a 'incident' -d 'Resolve incident'
1107
- complete -c c8 -n '__fish_seen_subcommand_from resolve' -a 'incident' -d 'Resolve incident'
1108
- complete -c c8ctl -n '__fish_seen_subcommand_from resolve' -a 'inc' -d 'Resolve incident'
1109
- complete -c c8 -n '__fish_seen_subcommand_from resolve' -a 'inc' -d 'Resolve incident'
1110
-
1111
- # Resources for 'publish' command
1112
- complete -c c8ctl -n '__fish_seen_subcommand_from publish' -a 'message' -d 'Publish message'
1113
- complete -c c8 -n '__fish_seen_subcommand_from publish' -a 'message' -d 'Publish message'
1114
- complete -c c8ctl -n '__fish_seen_subcommand_from publish' -a 'msg' -d 'Publish message'
1115
- complete -c c8 -n '__fish_seen_subcommand_from publish' -a 'msg' -d 'Publish message'
1116
-
1117
- # Resources for 'correlate' command
1118
- complete -c c8ctl -n '__fish_seen_subcommand_from correlate' -a 'message' -d 'Correlate message'
1119
- complete -c c8 -n '__fish_seen_subcommand_from correlate' -a 'message' -d 'Correlate message'
1120
- complete -c c8ctl -n '__fish_seen_subcommand_from correlate' -a 'msg' -d 'Correlate message'
1121
- complete -c c8 -n '__fish_seen_subcommand_from correlate' -a 'msg' -d 'Correlate message'
1122
-
1123
- # Resources for 'delete' command
1124
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'user' -d 'Delete user'
1125
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'user' -d 'Delete user'
1126
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'role' -d 'Delete role'
1127
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'role' -d 'Delete role'
1128
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'group' -d 'Delete group'
1129
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'group' -d 'Delete group'
1130
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'tenant' -d 'Delete tenant'
1131
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'tenant' -d 'Delete tenant'
1132
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'authorization' -d 'Delete authorization'
1133
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'authorization' -d 'Delete authorization'
1134
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'auth' -d 'Delete authorization'
1135
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'auth' -d 'Delete authorization'
1136
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'mapping-rule' -d 'Delete mapping rule'
1137
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'mapping-rule' -d 'Delete mapping rule'
1138
- complete -c c8ctl -n '__fish_seen_subcommand_from delete' -a 'mr' -d 'Delete mapping rule'
1139
- complete -c c8 -n '__fish_seen_subcommand_from delete' -a 'mr' -d 'Delete mapping rule'
1140
-
1141
- # Resources for 'assign' command
1142
- complete -c c8ctl -n '__fish_seen_subcommand_from assign' -a 'role' -d 'Assign role'
1143
- complete -c c8 -n '__fish_seen_subcommand_from assign' -a 'role' -d 'Assign role'
1144
- complete -c c8ctl -n '__fish_seen_subcommand_from assign' -a 'user' -d 'Assign user'
1145
- complete -c c8 -n '__fish_seen_subcommand_from assign' -a 'user' -d 'Assign user'
1146
- complete -c c8ctl -n '__fish_seen_subcommand_from assign' -a 'group' -d 'Assign group'
1147
- complete -c c8 -n '__fish_seen_subcommand_from assign' -a 'group' -d 'Assign group'
1148
- complete -c c8ctl -n '__fish_seen_subcommand_from assign' -a 'mapping-rule' -d 'Assign mapping rule'
1149
- complete -c c8 -n '__fish_seen_subcommand_from assign' -a 'mapping-rule' -d 'Assign mapping rule'
1150
- complete -c c8ctl -n '__fish_seen_subcommand_from assign' -a 'mr' -d 'Assign mapping rule'
1151
- complete -c c8 -n '__fish_seen_subcommand_from assign' -a 'mr' -d 'Assign mapping rule'
1152
-
1153
- # Resources for 'unassign' command
1154
- complete -c c8ctl -n '__fish_seen_subcommand_from unassign' -a 'role' -d 'Unassign role'
1155
- complete -c c8 -n '__fish_seen_subcommand_from unassign' -a 'role' -d 'Unassign role'
1156
- complete -c c8ctl -n '__fish_seen_subcommand_from unassign' -a 'user' -d 'Unassign user'
1157
- complete -c c8 -n '__fish_seen_subcommand_from unassign' -a 'user' -d 'Unassign user'
1158
- complete -c c8ctl -n '__fish_seen_subcommand_from unassign' -a 'group' -d 'Unassign group'
1159
- complete -c c8 -n '__fish_seen_subcommand_from unassign' -a 'group' -d 'Unassign group'
1160
- complete -c c8ctl -n '__fish_seen_subcommand_from unassign' -a 'mapping-rule' -d 'Unassign mapping rule'
1161
- complete -c c8 -n '__fish_seen_subcommand_from unassign' -a 'mapping-rule' -d 'Unassign mapping rule'
1162
- complete -c c8ctl -n '__fish_seen_subcommand_from unassign' -a 'mr' -d 'Unassign mapping rule'
1163
- complete -c c8 -n '__fish_seen_subcommand_from unassign' -a 'mr' -d 'Unassign mapping rule'
1164
-
1165
- # Resources for 'add' command
1166
- complete -c c8ctl -n '__fish_seen_subcommand_from add' -a 'profile' -d 'Add profile'
1167
- complete -c c8 -n '__fish_seen_subcommand_from add' -a 'profile' -d 'Add profile'
1168
-
1169
- # Resources for 'remove' and 'rm' commands
1170
- complete -c c8ctl -n '__fish_seen_subcommand_from remove' -a 'profile' -d 'Remove profile'
1171
- complete -c c8 -n '__fish_seen_subcommand_from remove' -a 'profile' -d 'Remove profile'
1172
- complete -c c8ctl -n '__fish_seen_subcommand_from rm' -a 'profile' -d 'Remove profile'
1173
- complete -c c8 -n '__fish_seen_subcommand_from rm' -a 'profile' -d 'Remove profile'
1174
-
1175
- # Resources for 'load' command
1176
- complete -c c8ctl -n '__fish_seen_subcommand_from load' -a 'plugin' -d 'Load plugin'
1177
- complete -c c8 -n '__fish_seen_subcommand_from load' -a 'plugin' -d 'Load plugin'
1178
-
1179
- # Resources for 'unload' command
1180
- complete -c c8ctl -n '__fish_seen_subcommand_from unload' -a 'plugin' -d 'Unload plugin'
1181
- complete -c c8 -n '__fish_seen_subcommand_from unload' -a 'plugin' -d 'Unload plugin'
1182
-
1183
- # Resources for 'sync' command
1184
- complete -c c8ctl -n '__fish_seen_subcommand_from sync' -a 'plugin' -d 'Synchronize plugin'
1185
- complete -c c8 -n '__fish_seen_subcommand_from sync' -a 'plugin' -d 'Synchronize plugin'
1186
- complete -c c8ctl -n '__fish_seen_subcommand_from sync' -a 'plugins' -d 'Synchronize plugins'
1187
- complete -c c8 -n '__fish_seen_subcommand_from sync' -a 'plugins' -d 'Synchronize plugins'
1188
-
1189
- # Resources for 'upgrade' command
1190
- complete -c c8ctl -n '__fish_seen_subcommand_from upgrade' -a 'plugin' -d 'Upgrade plugin'
1191
- complete -c c8 -n '__fish_seen_subcommand_from upgrade' -a 'plugin' -d 'Upgrade plugin'
1192
-
1193
- # Resources for 'downgrade' command
1194
- complete -c c8ctl -n '__fish_seen_subcommand_from downgrade' -a 'plugin' -d 'Downgrade plugin'
1195
- complete -c c8 -n '__fish_seen_subcommand_from downgrade' -a 'plugin' -d 'Downgrade plugin'
1196
-
1197
- # Resources for 'init' command
1198
- complete -c c8ctl -n '__fish_seen_subcommand_from init' -a 'plugin' -d 'Create new plugin from template'
1199
- complete -c c8 -n '__fish_seen_subcommand_from init' -a 'plugin' -d 'Create new plugin from template'
1200
-
1201
- # Resources for 'use' command
1202
- complete -c c8ctl -n '__fish_seen_subcommand_from use' -a 'profile' -d 'Set active profile'
1203
- complete -c c8 -n '__fish_seen_subcommand_from use' -a 'profile' -d 'Set active profile'
1204
- complete -c c8ctl -n '__fish_seen_subcommand_from use' -a 'tenant' -d 'Set active tenant'
1205
- complete -c c8 -n '__fish_seen_subcommand_from use' -a 'tenant' -d 'Set active tenant'
1206
-
1207
- # Resources for 'which' command
1208
- complete -c c8ctl -n '__fish_seen_subcommand_from which' -a 'profile' -d 'Show active profile'
1209
- complete -c c8 -n '__fish_seen_subcommand_from which' -a 'profile' -d 'Show active profile'
1210
-
1211
- # Resources for 'output' command
1212
- complete -c c8ctl -n '__fish_seen_subcommand_from output' -a 'json' -d 'JSON output'
1213
- complete -c c8 -n '__fish_seen_subcommand_from output' -a 'json' -d 'JSON output'
1214
- complete -c c8ctl -n '__fish_seen_subcommand_from output' -a 'text' -d 'Text output'
1215
- complete -c c8 -n '__fish_seen_subcommand_from output' -a 'text' -d 'Text output'
1216
-
1217
- # Resources for 'completion' command
1218
- complete -c c8ctl -n '__fish_seen_subcommand_from completion' -a 'bash' -d 'Generate bash completion'
1219
- complete -c c8 -n '__fish_seen_subcommand_from completion' -a 'bash' -d 'Generate bash completion'
1220
- complete -c c8ctl -n '__fish_seen_subcommand_from completion' -a 'zsh' -d 'Generate zsh completion'
1221
- complete -c c8 -n '__fish_seen_subcommand_from completion' -a 'zsh' -d 'Generate zsh completion'
1222
- complete -c c8ctl -n '__fish_seen_subcommand_from completion' -a 'fish' -d 'Generate fish completion'
1223
- complete -c c8 -n '__fish_seen_subcommand_from completion' -a 'fish' -d 'Generate fish completion'
1224
-
1225
- # Resources for 'help' command
1226
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'list' -d 'Show list command help'
1227
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'list' -d 'Show list command help'
1228
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'get' -d 'Show get command help'
1229
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'get' -d 'Show get command help'
1230
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'create' -d 'Show create command help'
1231
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'create' -d 'Show create command help'
1232
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'complete' -d 'Show complete command help'
1233
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'complete' -d 'Show complete command help'
1234
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'await' -d 'Show await command help'
1235
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'await' -d 'Show await command help'
1236
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'search' -d 'Show search command help'
1237
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'search' -d 'Show search command help'
1238
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'deploy' -d 'Show deploy command help'
1239
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'deploy' -d 'Show deploy command help'
1240
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'run' -d 'Show run command help'
1241
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'run' -d 'Show run command help'
1242
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'watch' -d 'Show watch command help'
1243
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'watch' -d 'Show watch command help'
1244
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'open' -d 'Show open command help'
1245
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'open' -d 'Show open command help'
1246
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'cancel' -d 'Show cancel command help'
1247
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'cancel' -d 'Show cancel command help'
1248
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'resolve' -d 'Show resolve command help'
1249
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'resolve' -d 'Show resolve command help'
1250
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'fail' -d 'Show fail command help'
1251
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'fail' -d 'Show fail command help'
1252
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'activate' -d 'Show activate command help'
1253
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'activate' -d 'Show activate command help'
1254
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'publish' -d 'Show publish command help'
1255
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'publish' -d 'Show publish command help'
1256
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'correlate' -d 'Show correlate command help'
1257
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'correlate' -d 'Show correlate command help'
1258
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'delete' -d 'Show delete command help'
1259
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'delete' -d 'Show delete command help'
1260
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'assign' -d 'Show assign command help'
1261
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'assign' -d 'Show assign command help'
1262
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'unassign' -d 'Show unassign command help'
1263
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'unassign' -d 'Show unassign command help'
1264
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'upgrade' -d 'Show upgrade command help'
1265
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'upgrade' -d 'Show upgrade command help'
1266
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'downgrade' -d 'Show downgrade command help'
1267
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'downgrade' -d 'Show downgrade command help'
1268
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'init' -d 'Show init command help'
1269
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'init' -d 'Show init command help'
1270
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'profiles' -d 'Show profile management help'
1271
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'profiles' -d 'Show profile management help'
1272
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'profile' -d 'Alias for profile management help'
1273
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'profile' -d 'Alias for profile management help'
1274
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'plugin' -d 'Show plugin management help'
1275
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'plugin' -d 'Show plugin management help'
1276
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'plugins' -d 'Alias for plugin management help'
1277
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'plugins' -d 'Alias for plugin management help'
1278
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'cluster' -d 'No detailed help; use c8ctl help for general usage'
1279
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'cluster' -d 'No detailed help; use c8ctl help for general usage'
1280
- complete -c c8ctl -n '__fish_seen_subcommand_from help' -a 'feedback' -d 'Show feedback command help'
1281
- complete -c c8 -n '__fish_seen_subcommand_from help' -a 'feedback' -d 'Show feedback command help'
1282
-
1283
- # Resources for 'cluster' command
1284
- complete -c c8ctl -n '__fish_seen_subcommand_from cluster' -a 'start' -d 'Start local Camunda 8 cluster'
1285
- complete -c c8 -n '__fish_seen_subcommand_from cluster' -a 'start' -d 'Start local Camunda 8 cluster'
1286
- complete -c c8ctl -n '__fish_seen_subcommand_from cluster' -a 'stop' -d 'Stop local Camunda 8 cluster'
1287
- complete -c c8 -n '__fish_seen_subcommand_from cluster' -a 'stop' -d 'Stop local Camunda 8 cluster'
1288
-
1289
- # Resources for 'open' command
1290
- complete -c c8ctl -n '__fish_seen_subcommand_from open' -a 'operate' -d 'Open Camunda Operate'
1291
- complete -c c8 -n '__fish_seen_subcommand_from open' -a 'operate' -d 'Open Camunda Operate'
1292
- complete -c c8ctl -n '__fish_seen_subcommand_from open' -a 'tasklist' -d 'Open Camunda Tasklist'
1293
- complete -c c8 -n '__fish_seen_subcommand_from open' -a 'tasklist' -d 'Open Camunda Tasklist'
1294
- complete -c c8ctl -n '__fish_seen_subcommand_from open' -a 'modeler' -d 'Open Camunda Web Modeler'
1295
- complete -c c8 -n '__fish_seen_subcommand_from open' -a 'modeler' -d 'Open Camunda Web Modeler'
1296
- complete -c c8ctl -n '__fish_seen_subcommand_from open' -a 'optimize' -d 'Open Camunda Optimize'
1297
- complete -c c8 -n '__fish_seen_subcommand_from open' -a 'optimize' -d 'Open Camunda Optimize'
1298
- `;
339
+ const pluginCmds = getPluginCommandsInfo();
340
+ const verbInfos = deriveVerbInfos(pluginCmds);
341
+ const allFlags = deriveAllFlags();
342
+ const helpResources = deriveHelpResources();
343
+ const lines = [
344
+ "# c8ctl fish completion",
345
+ "",
346
+ "# Remove all existing completions for c8ctl and c8",
347
+ "complete -c c8ctl -e",
348
+ "complete -c c8 -e",
349
+ "",
350
+ ];
351
+ // Global flags
352
+ lines.push("# Global flags");
353
+ for (const f of allFlags) {
354
+ const desc = escFish(f.description);
355
+ const req = f.type === "string" ? " -r" : "";
356
+ if (f.short) {
357
+ lines.push(`complete -c c8ctl -s ${f.short} -l ${f.name} -d '${desc}'${req}`);
358
+ lines.push(`complete -c c8 -s ${f.short} -l ${f.name} -d '${desc}'${req}`);
359
+ }
360
+ else {
361
+ lines.push(`complete -c c8ctl -l ${f.name} -d '${desc}'${req}`);
362
+ lines.push(`complete -c c8 -l ${f.name} -d '${desc}'${req}`);
363
+ }
364
+ }
365
+ lines.push("");
366
+ // Verb completions
367
+ lines.push("# Commands (verbs) - only suggest when no command is given yet");
368
+ for (const v of verbInfos) {
369
+ const desc = escFish(v.description);
370
+ lines.push(`complete -c c8ctl -n '__fish_use_subcommand' -a '${v.verb}' -d '${desc}'`);
371
+ lines.push(`complete -c c8 -n '__fish_use_subcommand' -a '${v.verb}' -d '${desc}'`);
372
+ for (const a of v.aliases) {
373
+ lines.push(`complete -c c8ctl -n '__fish_use_subcommand' -a '${a}' -d '${desc}'`);
374
+ lines.push(`complete -c c8 -n '__fish_use_subcommand' -a '${a}' -d '${desc}'`);
375
+ }
376
+ }
377
+ lines.push("");
378
+ // Per-verb resource completions
379
+ for (const v of verbInfos) {
380
+ if (v.verb === "help") {
381
+ lines.push(`# Resources for 'help' command`);
382
+ for (const r of helpResources) {
383
+ const desc = escFish(r.description);
384
+ lines.push(`complete -c c8ctl -n '__fish_seen_subcommand_from help' -a '${r.name}' -d '${desc}'`);
385
+ lines.push(`complete -c c8 -n '__fish_seen_subcommand_from help' -a '${r.name}' -d '${desc}'`);
386
+ }
387
+ lines.push("");
388
+ continue;
389
+ }
390
+ if (v.fileComplete || v.resources.length === 0)
391
+ continue;
392
+ const seenFrom = [v.verb, ...v.aliases].join(" ");
393
+ lines.push(`# Resources for '${v.verb}' command`);
394
+ for (const r of v.resources) {
395
+ const desc = escFish(`${capitalize(v.verb)} ${resourceDisplayName(r)}`);
396
+ lines.push(`complete -c c8ctl -n '__fish_seen_subcommand_from ${seenFrom}' -a '${r}' -d '${desc}'`);
397
+ lines.push(`complete -c c8 -n '__fish_seen_subcommand_from ${seenFrom}' -a '${r}' -d '${desc}'`);
398
+ }
399
+ lines.push("");
400
+ }
401
+ lines.unshift(`# c8ctl-completion-version: ${c8ctl.version}`);
402
+ return `${lines.join("\n")}\n`;
403
+ }
404
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
405
+ function capitalize(s) {
406
+ return s.charAt(0).toUpperCase() + s.slice(1);
407
+ }
408
+ /** Human-readable name from resource alias. */
409
+ function resourceDisplayName(resource) {
410
+ const canonical = RESOURCE_ALIASES[resource] ?? resource;
411
+ return canonical.replace(/-/g, " ") + (resource !== canonical ? "s" : "");
412
+ }
413
+ function escZsh(s) {
414
+ return s.replace(/'/g, "'\\''");
415
+ }
416
+ function escFish(s) {
417
+ return s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
1299
418
  }
419
+ // ─── Public API ──────────────────────────────────────────────────────────────
1300
420
  /**
1301
421
  * Show completion command
1302
422
  */
@@ -1324,4 +444,251 @@ export function showCompletion(shell) {
1324
444
  process.exit(1);
1325
445
  }
1326
446
  }
447
+ // ─── Completion install ──────────────────────────────────────────────────────
448
+ /** Version header prefix used to tag generated completion files. */
449
+ const VERSION_HEADER_PREFIX = "# c8ctl-completion-version: ";
450
+ /** Completions subdirectory under the user data dir. */
451
+ const COMPLETIONS_DIR = "completions";
452
+ /** Shell file extensions. */
453
+ const SHELL_EXTENSIONS = {
454
+ bash: "bash",
455
+ zsh: "zsh",
456
+ fish: "fish",
457
+ };
458
+ /** Detect the user's shell from $SHELL. Returns lowercase shell name or undefined. */
459
+ export function detectShell() {
460
+ const shellPath = process.env.SHELL;
461
+ if (!shellPath)
462
+ return undefined;
463
+ const base = shellPath.split("/").pop();
464
+ if (!base)
465
+ return undefined;
466
+ const name = base.toLowerCase();
467
+ if (name === "bash" || name === "zsh" || name === "fish")
468
+ return name;
469
+ return undefined;
470
+ }
471
+ /** Get the appropriate RC file path for a given shell. */
472
+ export function getShellRcFile(shell) {
473
+ const home = homedir();
474
+ switch (shell) {
475
+ case "bash":
476
+ // macOS uses .bash_profile by default; Linux uses .bashrc
477
+ return platform() === "darwin"
478
+ ? join(home, ".bash_profile")
479
+ : join(home, ".bashrc");
480
+ case "zsh":
481
+ return join(home, ".zshrc");
482
+ case "fish":
483
+ // fish auto-loads from completions dir — no rc edit needed
484
+ return undefined;
485
+ default:
486
+ return undefined;
487
+ }
488
+ }
489
+ /** Get the path where the completion file will be written. */
490
+ export function getCompletionFilePath(shell) {
491
+ const ext = SHELL_EXTENSIONS[shell] ?? shell;
492
+ return join(getUserDataDir(), COMPLETIONS_DIR, `c8ctl.${ext}`);
493
+ }
494
+ /** Get the fish completions dir (fish auto-loads from here). Respects XDG_CONFIG_HOME. */
495
+ function getFishCompletionsDir() {
496
+ const configHome = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
497
+ return join(configHome, "fish", "completions");
498
+ }
499
+ /** Generate the source line that goes into the shell RC file.
500
+ * Uses single quotes to prevent shell expansion of the path. */
501
+ function buildSourceLine(completionFilePath) {
502
+ // Reject control characters (newlines, null, etc.) that could inject
503
+ // additional commands into the shell RC file.
504
+ for (const ch of completionFilePath) {
505
+ const code = ch.charCodeAt(0);
506
+ if (code <= 0x1f || code === 0x7f) {
507
+ throw new Error("Completion file path contains control characters.");
508
+ }
509
+ }
510
+ const escaped = completionFilePath.replaceAll("'", "'\\''");
511
+ return `source '${escaped}'`;
512
+ }
513
+ /** Generate the comment+source block for the RC file. */
514
+ function buildRcBlock(completionFilePath) {
515
+ return `\n# c8ctl shell completion\n${buildSourceLine(completionFilePath)}\n`;
516
+ }
517
+ /** Check if the RC file already contains the source line.
518
+ * Checks for both the current single-quoted source line and the legacy
519
+ * double-quoted form, so upgrades are detected without false-positiving
520
+ * on the raw path appearing in unrelated lines. */
521
+ function rcAlreadyConfigured(rcFile, completionFilePath) {
522
+ if (!existsSync(rcFile))
523
+ return false;
524
+ try {
525
+ const content = readFileSync(rcFile, "utf-8");
526
+ // Check for current single-quoted source line
527
+ if (content.includes(buildSourceLine(completionFilePath)))
528
+ return true;
529
+ // Check for legacy double-quoted source line
530
+ const escaped = completionFilePath.replaceAll('"', '\\"');
531
+ if (content.includes(`source "${escaped}"`))
532
+ return true;
533
+ return false;
534
+ }
535
+ catch {
536
+ return false;
537
+ }
538
+ }
539
+ /** Generate the completion script content for a given shell. */
540
+ function generateForShell(shell) {
541
+ switch (shell) {
542
+ case "bash":
543
+ return generateBashCompletion();
544
+ case "zsh":
545
+ return generateZshCompletion();
546
+ case "fish":
547
+ return generateFishCompletion();
548
+ default:
549
+ throw new Error(`Unknown shell: ${shell}`);
550
+ }
551
+ }
552
+ /** Extract the version from a completion file's header lines.
553
+ * Scans the first few lines so the header can appear after
554
+ * shell-required directives like zsh's #compdef. */
555
+ export function extractCompletionVersion(filePath) {
556
+ if (!existsSync(filePath))
557
+ return undefined;
558
+ try {
559
+ const content = readFileSync(filePath, "utf-8");
560
+ const lines = content.split("\n").slice(0, 5);
561
+ for (const line of lines) {
562
+ if (line.startsWith(VERSION_HEADER_PREFIX)) {
563
+ return line.slice(VERSION_HEADER_PREFIX.length).trim();
564
+ }
565
+ }
566
+ return undefined;
567
+ }
568
+ catch {
569
+ return undefined;
570
+ }
571
+ }
572
+ /**
573
+ * Install shell completions: write script to data dir, wire into RC file.
574
+ *
575
+ * Supports --dry-run via the c8ctl runtime flag.
576
+ */
577
+ export function installCompletion(shellOverride) {
578
+ const logger = getLogger();
579
+ const shell = shellOverride?.toLowerCase() ?? detectShell();
580
+ if (!shell) {
581
+ logger.error("Could not detect shell. Specify with: c8ctl completion install --shell <bash|zsh|fish>");
582
+ process.exit(1);
583
+ }
584
+ if (!["bash", "zsh", "fish"].includes(shell)) {
585
+ logger.error(`Unsupported shell: ${shell}`);
586
+ logger.info("Supported shells: bash, zsh, fish");
587
+ process.exit(1);
588
+ }
589
+ const completionFile = getCompletionFilePath(shell);
590
+ const rcFile = getShellRcFile(shell);
591
+ const rcConfigured = rcFile
592
+ ? rcAlreadyConfigured(rcFile, completionFile)
593
+ : true;
594
+ // Dry-run support
595
+ if (c8ctl.dryRun) {
596
+ const result = {
597
+ dryRun: true,
598
+ detectedShell: shell,
599
+ completionFile,
600
+ };
601
+ if (rcFile) {
602
+ result.rcFile = rcFile;
603
+ result.sourceLine = buildSourceLine(completionFile);
604
+ result.rcAlreadyConfigured = rcConfigured;
605
+ }
606
+ if (shell === "fish") {
607
+ result.fishCompletionsDir = getFishCompletionsDir();
608
+ }
609
+ logger.json(result);
610
+ return;
611
+ }
612
+ // Write the completion file
613
+ try {
614
+ const completionDir = join(getUserDataDir(), COMPLETIONS_DIR);
615
+ mkdirSync(completionDir, { recursive: true });
616
+ const script = generateForShell(shell);
617
+ writeFileSync(completionFile, script, "utf-8");
618
+ logger.info(`Completion script written to ${completionFile}`);
619
+ // Fish: also copy to fish auto-load directory
620
+ if (shell === "fish") {
621
+ const fishDir = getFishCompletionsDir();
622
+ mkdirSync(fishDir, { recursive: true });
623
+ writeFileSync(join(fishDir, "c8ctl.fish"), script, "utf-8");
624
+ logger.info(`Fish completion installed to ${fishDir}/c8ctl.fish`);
625
+ logger.info("Completions will be loaded automatically on next shell start.");
626
+ return;
627
+ }
628
+ // Wire into RC file (bash/zsh)
629
+ if (rcFile) {
630
+ if (rcConfigured) {
631
+ logger.info(`RC file already configured: ${rcFile}`);
632
+ }
633
+ else {
634
+ const block = buildRcBlock(completionFile);
635
+ writeFileSync(rcFile, block, { encoding: "utf-8", flag: "a" });
636
+ logger.info(`Added source line to ${rcFile}`);
637
+ }
638
+ }
639
+ logger.info("Restart your shell or run:");
640
+ logger.info(` ${buildSourceLine(completionFile)}`);
641
+ }
642
+ catch (err) {
643
+ const msg = err instanceof Error ? err.message : String(err);
644
+ logger.error(`Failed to install completions: ${msg}`);
645
+ logger.info(`Target path: ${completionFile}`);
646
+ if (rcFile) {
647
+ logger.info(`Add this line manually to your shell config:\n ${buildSourceLine(completionFile)}`);
648
+ }
649
+ process.exit(1);
650
+ }
651
+ }
652
+ /**
653
+ * Refresh the installed completion file if the CLI version has changed.
654
+ *
655
+ * Called on every CLI invocation — no-op if completions are not installed
656
+ * or if the embedded version matches the running CLI version.
657
+ * Synchronous write (~1ms for a few KB).
658
+ */
659
+ export function refreshCompletionsIfStale() {
660
+ // Skip in dry-run mode — refresh is a side effect
661
+ if (c8ctl.dryRun)
662
+ return;
663
+ // Use the same source of truth as generateForShell() for version headers
664
+ const currentVersion = c8ctl.version;
665
+ // Check each shell — user may have installed for multiple shells
666
+ for (const shell of ["bash", "zsh", "fish"]) {
667
+ const filePath = getCompletionFilePath(shell);
668
+ const installed = extractCompletionVersion(filePath);
669
+ if (installed === undefined) {
670
+ // No version header — treat existing file as stale, regenerate
671
+ if (!existsSync(filePath))
672
+ continue; // not installed for this shell
673
+ }
674
+ else if (installed === currentVersion) {
675
+ continue; // up to date
676
+ }
677
+ // Stale — regenerate
678
+ try {
679
+ const script = generateForShell(shell);
680
+ writeFileSync(filePath, script, "utf-8");
681
+ // Fish: also update the auto-load copy
682
+ if (shell === "fish") {
683
+ const fishTarget = join(getFishCompletionsDir(), "c8ctl.fish");
684
+ if (existsSync(fishTarget)) {
685
+ writeFileSync(fishTarget, script, "utf-8");
686
+ }
687
+ }
688
+ }
689
+ catch {
690
+ // Best-effort — don't crash if the write fails
691
+ }
692
+ }
693
+ }
1327
694
  //# sourceMappingURL=completion.js.map