@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,163 +1,129 @@
1
1
  /**
2
2
  * Identity tenant commands
3
3
  */
4
- import { TenantId } from "@camunda8/orchestration-cluster-api";
5
- import { createClient, emitDryRun, fetchAllPages } from "../client.js";
6
- import { resolveClusterConfig } from "../config.js";
7
- import { handleCommandError } from "../errors.js";
4
+ import { fetchAllPages } from "../client.js";
5
+ import { defineCommand, dryRun } from "../command-framework.js";
8
6
  import { getLogger, sortTableData } from "../logger.js";
9
- import { c8ctl } from "../runtime.js";
10
7
  /**
11
8
  * List all tenants
12
9
  */
13
- export async function listTenants(options) {
14
- const logger = getLogger();
15
- const client = createClient(options.profile);
16
- if (emitDryRun({
10
+ export const listTenantsCommand = defineCommand("list", "tenant", async (ctx) => {
11
+ const { client, profile, limit } = ctx;
12
+ const dr = dryRun({
17
13
  command: "list tenants",
18
14
  method: "POST",
19
15
  endpoint: "/tenants/search",
20
- profile: options.profile,
16
+ profile,
21
17
  body: {},
22
- }))
23
- return;
24
- try {
25
- const items = await fetchAllPages((filter, opts) => client.searchTenants(filter, opts), {}, undefined, options.limit);
26
- if (items.length === 0) {
27
- logger.info("No tenants found");
28
- return;
29
- }
30
- let tableData = items.map((t) => ({
18
+ });
19
+ if (dr)
20
+ return dr;
21
+ const items = await fetchAllPages((filter, opts) => client.searchTenants(filter, opts), {}, undefined, limit);
22
+ return {
23
+ kind: "list",
24
+ items: items.map((t) => ({
31
25
  "Tenant ID": t.tenantId ?? "",
32
26
  Name: t.name ?? "",
33
27
  Description: t.description ?? "",
34
- }));
35
- tableData = sortTableData(tableData, options.sortBy, logger, options.sortOrder);
36
- logger.table(tableData);
37
- }
38
- catch (error) {
39
- handleCommandError(logger, "Failed to list tenants", error);
40
- }
41
- }
28
+ })),
29
+ emptyMessage: "No tenants found",
30
+ };
31
+ });
42
32
  /**
43
33
  * Search tenants with filters
44
34
  */
45
- export async function searchIdentityTenants(options) {
46
- const logger = getLogger();
47
- const client = createClient(options.profile);
48
- try {
49
- const filter = {};
50
- if (options.tenantId)
51
- filter.tenantId = options.tenantId;
52
- if (options.name)
53
- filter.name = options.name;
54
- const searchFilter = Object.keys(filter).length > 0 ? { filter } : {};
55
- if (emitDryRun({
56
- command: "search tenants",
57
- method: "POST",
58
- endpoint: "/tenants/search",
59
- profile: options.profile,
60
- body: searchFilter,
61
- }))
62
- return;
63
- const items = await fetchAllPages((f, opts) => client.searchTenants(f, opts), searchFilter, undefined, options.limit);
64
- if (items.length === 0) {
65
- logger.info("No tenants found");
66
- return;
67
- }
68
- let tableData = items.map((t) => ({
69
- "Tenant ID": t.tenantId ?? "",
70
- Name: t.name ?? "",
71
- Description: t.description ?? "",
72
- }));
73
- tableData = sortTableData(tableData, options.sortBy, logger, options.sortOrder);
74
- logger.table(tableData);
75
- }
76
- catch (error) {
77
- handleCommandError(logger, "Failed to search tenants", error);
35
+ export const searchIdentityTenantsCommand = defineCommand("search", "tenant", async (ctx, flags, _args) => {
36
+ const { client, logger, profile, limit, sortBy, sortOrder } = ctx;
37
+ const filter = {};
38
+ if (flags.tenantId)
39
+ filter.tenantId = flags.tenantId;
40
+ if (flags.name)
41
+ filter.name = flags.name;
42
+ const searchFilter = Object.keys(filter).length > 0 ? { filter } : {};
43
+ const dr = dryRun({
44
+ command: "search tenants",
45
+ method: "POST",
46
+ endpoint: "/tenants/search",
47
+ profile,
48
+ body: searchFilter,
49
+ });
50
+ if (dr)
51
+ return dr;
52
+ const items = await fetchAllPages((f, opts) => client.searchTenants(f, opts), searchFilter, undefined, limit);
53
+ if (items.length === 0) {
54
+ logger.info("No tenants found");
55
+ return;
78
56
  }
79
- }
57
+ let tableData = items.map((t) => ({
58
+ "Tenant ID": t.tenantId ?? "",
59
+ Name: t.name ?? "",
60
+ Description: t.description ?? "",
61
+ }));
62
+ tableData = sortTableData(tableData, sortBy, logger, sortOrder);
63
+ logger.table(tableData);
64
+ });
80
65
  /**
81
66
  * Get a single tenant by tenantId
82
67
  */
83
- export async function getIdentityTenant(tenantId, options) {
84
- const logger = getLogger();
85
- const client = createClient(options.profile);
86
- if (emitDryRun({
68
+ export const getIdentityTenantCommand = defineCommand("get", "tenant", async (ctx, _flags, args) => {
69
+ const { client, profile } = ctx;
70
+ const tenantId = args.tenantId;
71
+ const dr = dryRun({
87
72
  command: "get tenant",
88
73
  method: "GET",
89
74
  endpoint: `/tenants/${tenantId}`,
90
- profile: options.profile,
91
- }))
92
- return;
93
- try {
94
- const result = await client.getTenant({ tenantId: TenantId.assumeExists(tenantId) }, { consistency: { waitUpToMs: 0 } });
95
- logger.json(result);
96
- }
97
- catch (error) {
98
- handleCommandError(logger, `Failed to get tenant '${tenantId}'`, error);
99
- }
100
- }
75
+ profile,
76
+ });
77
+ if (dr)
78
+ return dr;
79
+ const result = await client.getTenant({ tenantId }, { consistency: { waitUpToMs: 0 } });
80
+ return { kind: "get", data: result };
81
+ });
101
82
  /**
102
83
  * Create a new tenant
103
84
  */
104
- export async function createIdentityTenant(options) {
105
- const logger = getLogger();
106
- if (!options.tenantId) {
107
- logger.error("--tenantId is required");
85
+ export const createIdentityTenantCommand = defineCommand("create", "tenant", async (ctx, flags, _args) => {
86
+ const { client, profile } = ctx;
87
+ if (!flags.tenantId) {
88
+ getLogger().error("--tenantId is required");
108
89
  process.exit(1);
109
90
  }
110
- if (!options.name) {
111
- logger.error("--name is required");
91
+ if (!flags.name) {
92
+ getLogger().error("--name is required");
112
93
  process.exit(1);
113
94
  }
114
95
  const body = {
115
- tenantId: options.tenantId,
116
- name: options.name,
96
+ tenantId: flags.tenantId,
97
+ name: flags.name,
117
98
  };
118
- if (c8ctl.dryRun) {
119
- const config = resolveClusterConfig(options.profile);
120
- logger.json({
121
- dryRun: true,
122
- command: "create tenant",
123
- method: "POST",
124
- url: `${config.baseUrl}/tenants`,
125
- body,
126
- });
127
- return;
128
- }
129
- const client = createClient(options.profile);
130
- try {
131
- await client.createTenant(body);
132
- logger.success(`Tenant '${options.tenantId}' created`);
133
- }
134
- catch (error) {
135
- handleCommandError(logger, "Failed to create tenant", error);
136
- }
137
- }
99
+ const dr = dryRun({
100
+ command: "create tenant",
101
+ method: "POST",
102
+ endpoint: "/tenants",
103
+ profile,
104
+ body,
105
+ });
106
+ if (dr)
107
+ return dr;
108
+ await client.createTenant(body);
109
+ return { kind: "success", message: `Tenant '${flags.tenantId}' created` };
110
+ });
138
111
  /**
139
112
  * Delete a tenant by tenantId
140
113
  */
141
- export async function deleteIdentityTenant(tenantId, options) {
142
- const logger = getLogger();
143
- if (c8ctl.dryRun) {
144
- const config = resolveClusterConfig(options.profile);
145
- logger.json({
146
- dryRun: true,
147
- command: "delete tenant",
148
- method: "DELETE",
149
- url: `${config.baseUrl}/tenants/${encodeURIComponent(tenantId)}`,
150
- body: null,
151
- });
152
- return;
153
- }
154
- const client = createClient(options.profile);
155
- try {
156
- await client.deleteTenant({ tenantId: TenantId.assumeExists(tenantId) });
157
- logger.success(`Tenant '${tenantId}' deleted`);
158
- }
159
- catch (error) {
160
- handleCommandError(logger, `Failed to delete tenant '${tenantId}'`, error);
161
- }
162
- }
114
+ export const deleteIdentityTenantCommand = defineCommand("delete", "tenant", async (ctx, _flags, args) => {
115
+ const { client, profile } = ctx;
116
+ const tenantId = args.tenantId;
117
+ const dr = dryRun({
118
+ command: "delete tenant",
119
+ method: "DELETE",
120
+ endpoint: `/tenants/${encodeURIComponent(String(tenantId))}`,
121
+ profile,
122
+ body: null,
123
+ });
124
+ if (dr)
125
+ return dr;
126
+ await client.deleteTenant({ tenantId });
127
+ return { kind: "success", message: `Tenant '${tenantId}' deleted` };
128
+ });
163
129
  //# sourceMappingURL=identity-tenants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-tenants.js","sourceRoot":"","sources":["../../src/commands/identity-tenants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-tenants.js","sourceRoot":"","sources":["../../src/commands/identity-tenants.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,24 @@
1
1
  /**
2
2
  * Identity user commands
3
3
  */
4
- import { type SortOrder } from "../logger.ts";
5
4
  /**
6
5
  * List all users
7
6
  */
8
- export declare function listUsers(options: {
9
- profile?: string;
10
- sortBy?: string;
11
- sortOrder?: SortOrder;
12
- limit?: number;
13
- }): Promise<void>;
7
+ export declare const listUsersCommand: import("../command-framework.ts").CommandHandler<"list", "user">;
14
8
  /**
15
9
  * Search users with filters
16
10
  */
17
- export declare function searchIdentityUsers(options: {
18
- profile?: string;
19
- username?: string;
20
- name?: string;
21
- email?: string;
22
- sortBy?: string;
23
- sortOrder?: SortOrder;
24
- limit?: number;
25
- }): Promise<void>;
11
+ export declare const searchIdentityUsersCommand: import("../command-framework.ts").CommandHandler<"search", "user">;
26
12
  /**
27
13
  * Get a single user by username
28
14
  */
29
- export declare function getIdentityUser(username: string, options: {
30
- profile?: string;
31
- }): Promise<void>;
15
+ export declare const getIdentityUserCommand: import("../command-framework.ts").CommandHandler<"get", "user">;
32
16
  /**
33
17
  * Create a new user
34
18
  */
35
- export declare function createIdentityUser(options: {
36
- profile?: string;
37
- username?: string;
38
- name?: string;
39
- email?: string;
40
- password?: string;
41
- }): Promise<void>;
19
+ export declare const createIdentityUserCommand: import("../command-framework.ts").CommandHandler<"create", "user">;
42
20
  /**
43
21
  * Delete a user by username
44
22
  */
45
- export declare function deleteIdentityUser(username: string, options: {
46
- profile?: string;
47
- }): Promise<void>;
23
+ export declare const deleteIdentityUserCommand: import("../command-framework.ts").CommandHandler<"delete", "user">;
48
24
  //# sourceMappingURL=identity-users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-users.d.ts","sourceRoot":"","sources":["../../src/commands/identity-users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAa,KAAK,SAAS,EAAiB,MAAM,cAAc,CAAC;AAIxE;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ChB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,GACC,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,GACC,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"identity-users.d.ts","sourceRoot":"","sources":["../../src/commands/identity-users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,eAAO,MAAM,gBAAgB,kEA4B3B,CAAC;AACH;;GAEG;AACH,eAAO,MAAM,0BAA0B,oEA2CtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,iEAqBlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,oEAkCrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,oEAmBrC,CAAC"}
@@ -1,168 +1,134 @@
1
1
  /**
2
2
  * Identity user commands
3
3
  */
4
- import { Username } from "@camunda8/orchestration-cluster-api";
5
- import { createClient, emitDryRun, fetchAllPages } from "../client.js";
6
- import { resolveClusterConfig } from "../config.js";
7
- import { handleCommandError } from "../errors.js";
8
- import { getLogger, sortTableData } from "../logger.js";
9
- import { c8ctl } from "../runtime.js";
4
+ import { fetchAllPages } from "../client.js";
5
+ import { defineCommand, dryRun } from "../command-framework.js";
6
+ import { sortTableData } from "../logger.js";
10
7
  import { toStringFilter } from "./search.js";
11
8
  /**
12
9
  * List all users
13
10
  */
14
- export async function listUsers(options) {
15
- const logger = getLogger();
16
- const client = createClient(options.profile);
17
- if (emitDryRun({
11
+ export const listUsersCommand = defineCommand("list", "user", async (ctx) => {
12
+ const { client, profile, limit } = ctx;
13
+ const dr = dryRun({
18
14
  command: "list users",
19
15
  method: "POST",
20
16
  endpoint: "/users/search",
21
- profile: options.profile,
17
+ profile,
22
18
  body: {},
23
- }))
24
- return;
25
- try {
26
- const items = await fetchAllPages((filter, opts) => client.searchUsers(filter, opts), {}, undefined, options.limit);
27
- if (items.length === 0) {
28
- logger.info("No users found");
29
- return;
30
- }
31
- let tableData = items.map((u) => ({
19
+ });
20
+ if (dr)
21
+ return dr;
22
+ const items = await fetchAllPages((filter, opts) => client.searchUsers(filter, opts), {}, undefined, limit);
23
+ return {
24
+ kind: "list",
25
+ items: items.map((u) => ({
32
26
  Username: u.username ?? "",
33
27
  Name: u.name ?? "",
34
28
  Email: u.email ?? "",
35
- }));
36
- tableData = sortTableData(tableData, options.sortBy, logger, options.sortOrder);
37
- logger.table(tableData);
38
- }
39
- catch (error) {
40
- handleCommandError(logger, "Failed to list users", error);
41
- }
42
- }
29
+ })),
30
+ emptyMessage: "No users found",
31
+ };
32
+ });
43
33
  /**
44
34
  * Search users with filters
45
35
  */
46
- export async function searchIdentityUsers(options) {
47
- const logger = getLogger();
48
- const client = createClient(options.profile);
49
- try {
50
- const filter = {};
51
- if (options.username)
52
- filter.username = toStringFilter(options.username);
53
- if (options.name)
54
- filter.name = toStringFilter(options.name);
55
- if (options.email)
56
- filter.email = toStringFilter(options.email);
57
- const searchFilter = Object.keys(filter).length > 0 ? { filter } : {};
58
- if (emitDryRun({
59
- command: "search users",
60
- method: "POST",
61
- endpoint: "/users/search",
62
- profile: options.profile,
63
- body: searchFilter,
64
- }))
65
- return;
66
- const items = await fetchAllPages((f, opts) => client.searchUsers(f, opts), searchFilter, undefined, options.limit);
67
- if (items.length === 0) {
68
- logger.info("No users found");
69
- return;
70
- }
71
- let tableData = items.map((u) => ({
72
- Username: u.username ?? "",
73
- Name: u.name ?? "",
74
- Email: u.email ?? "",
75
- }));
76
- tableData = sortTableData(tableData, options.sortBy, logger, options.sortOrder);
77
- logger.table(tableData);
78
- }
79
- catch (error) {
80
- handleCommandError(logger, "Failed to search users", error);
36
+ export const searchIdentityUsersCommand = defineCommand("search", "user", async (ctx, flags, _args) => {
37
+ const { client, logger, profile, limit, sortBy, sortOrder } = ctx;
38
+ const filter = {};
39
+ if (flags.username)
40
+ filter.username = toStringFilter(String(flags.username));
41
+ if (flags.name)
42
+ filter.name = toStringFilter(String(flags.name));
43
+ if (flags.email)
44
+ filter.email = toStringFilter(String(flags.email));
45
+ const searchFilter = Object.keys(filter).length > 0 ? { filter } : {};
46
+ const dr = dryRun({
47
+ command: "search users",
48
+ method: "POST",
49
+ endpoint: "/users/search",
50
+ profile,
51
+ body: searchFilter,
52
+ });
53
+ if (dr)
54
+ return dr;
55
+ const items = await fetchAllPages((f, opts) => client.searchUsers(f, opts), searchFilter, undefined, limit);
56
+ if (items.length === 0) {
57
+ logger.info("No users found");
58
+ return;
81
59
  }
82
- }
60
+ let tableData = items.map((u) => ({
61
+ Username: u.username ?? "",
62
+ Name: u.name ?? "",
63
+ Email: u.email ?? "",
64
+ }));
65
+ tableData = sortTableData(tableData, sortBy, logger, sortOrder);
66
+ logger.table(tableData);
67
+ });
83
68
  /**
84
69
  * Get a single user by username
85
70
  */
86
- export async function getIdentityUser(username, options) {
87
- const logger = getLogger();
88
- const client = createClient(options.profile);
89
- if (emitDryRun({
71
+ export const getIdentityUserCommand = defineCommand("get", "user", async (ctx, _flags, args) => {
72
+ const { client, profile } = ctx;
73
+ const username = args.username;
74
+ const dr = dryRun({
90
75
  command: "get user",
91
76
  method: "GET",
92
77
  endpoint: `/users/${username}`,
93
- profile: options.profile,
94
- }))
95
- return;
96
- try {
97
- const result = await client.getUser({ username: Username.assumeExists(username) }, { consistency: { waitUpToMs: 0 } });
98
- logger.json(result);
99
- }
100
- catch (error) {
101
- handleCommandError(logger, `Failed to get user '${username}'`, error);
102
- }
103
- }
78
+ profile,
79
+ });
80
+ if (dr)
81
+ return dr;
82
+ const result = await client.getUser({ username }, { consistency: { waitUpToMs: 0 } });
83
+ return { kind: "get", data: result };
84
+ });
104
85
  /**
105
86
  * Create a new user
106
87
  */
107
- export async function createIdentityUser(options) {
108
- const logger = getLogger();
109
- if (!options.username) {
88
+ export const createIdentityUserCommand = defineCommand("create", "user", async (ctx, flags, _args) => {
89
+ const { client, logger, profile } = ctx;
90
+ if (!flags.username) {
110
91
  logger.error("--username is required");
111
92
  process.exit(1);
112
93
  }
113
- if (!options.password) {
94
+ if (!flags.password) {
114
95
  logger.error("--password is required");
115
96
  process.exit(1);
116
97
  }
117
98
  const body = {
118
- username: options.username,
119
- password: options.password,
120
- ...(options.name ? { name: options.name } : {}),
121
- ...(options.email ? { email: options.email } : {}),
99
+ username: flags.username,
100
+ password: flags.password,
101
+ ...(flags.name ? { name: flags.name } : {}),
102
+ ...(flags.email ? { email: flags.email } : {}),
122
103
  };
123
- if (c8ctl.dryRun) {
124
- const config = resolveClusterConfig(options.profile);
125
- logger.json({
126
- dryRun: true,
127
- command: "create user",
128
- method: "POST",
129
- url: `${config.baseUrl}/users`,
130
- body,
131
- });
132
- return;
133
- }
134
- const client = createClient(options.profile);
135
- try {
136
- await client.createUser(body);
137
- logger.success(`User '${options.username}' created`);
138
- }
139
- catch (error) {
140
- handleCommandError(logger, "Failed to create user", error);
141
- }
142
- }
104
+ const dr = dryRun({
105
+ command: "create user",
106
+ method: "POST",
107
+ endpoint: "/users",
108
+ profile,
109
+ body,
110
+ });
111
+ if (dr)
112
+ return dr;
113
+ await client.createUser(body);
114
+ return { kind: "success", message: `User '${flags.username}' created` };
115
+ });
143
116
  /**
144
117
  * Delete a user by username
145
118
  */
146
- export async function deleteIdentityUser(username, options) {
147
- const logger = getLogger();
148
- if (c8ctl.dryRun) {
149
- const config = resolveClusterConfig(options.profile);
150
- logger.json({
151
- dryRun: true,
152
- command: "delete user",
153
- method: "DELETE",
154
- url: `${config.baseUrl}/users/${encodeURIComponent(username)}`,
155
- body: null,
156
- });
157
- return;
158
- }
159
- const client = createClient(options.profile);
160
- try {
161
- await client.deleteUser({ username: Username.assumeExists(username) });
162
- logger.success(`User '${username}' deleted`);
163
- }
164
- catch (error) {
165
- handleCommandError(logger, `Failed to delete user '${username}'`, error);
166
- }
167
- }
119
+ export const deleteIdentityUserCommand = defineCommand("delete", "user", async (ctx, _flags, args) => {
120
+ const { client, profile } = ctx;
121
+ const username = args.username;
122
+ const dr = dryRun({
123
+ command: "delete user",
124
+ method: "DELETE",
125
+ endpoint: `/users/${encodeURIComponent(String(username))}`,
126
+ profile,
127
+ body: null,
128
+ });
129
+ if (dr)
130
+ return dr;
131
+ await client.deleteUser({ username });
132
+ return { kind: "success", message: `User '${username}' deleted` };
133
+ });
168
134
  //# sourceMappingURL=identity-users.js.map