@reximo/cli 0.1.0-alpha.2 → 0.1.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -5
- package/package.json +3 -2
- package/src/client/generated/index.d.ts +1 -0
- package/src/client/generated/index.js +7 -0
- package/src/client/generated/index.js.map +1 -0
- package/src/client/generated/reximo-api-client.generated.d.ts +306 -0
- package/src/client/generated/reximo-api-client.generated.js +282 -0
- package/src/client/generated/reximo-api-client.generated.js.map +1 -0
- package/src/client/reximo-client.d.ts +101 -1
- package/src/client/reximo-client.js +275 -1
- package/src/client/reximo-client.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +3 -1
- package/src/index.js.map +1 -1
- package/src/lib/config.d.ts +18 -2
- package/src/lib/config.js +61 -10
- package/src/lib/config.js.map +1 -1
- package/src/lib/prompt.d.ts +1 -0
- package/src/lib/prompt.js +6 -0
- package/src/lib/prompt.js.map +1 -0
- package/src/lib/prompts.d.ts +17 -0
- package/src/lib/prompts.js +98 -0
- package/src/lib/prompts.js.map +1 -0
- package/src/lib/run-cli.d.ts +6 -0
- package/src/lib/run-cli.js +441 -20
- package/src/lib/run-cli.js.map +1 -1
package/src/lib/run-cli.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { loadResolvedConfig } from './config';
|
|
1
2
|
import { type Writable } from './output';
|
|
3
|
+
import { type PromptAdapter } from './prompts';
|
|
4
|
+
import { type ReximoClient } from '../client/reximo-client';
|
|
2
5
|
export type CliDependencies = {
|
|
3
6
|
stdout: Writable;
|
|
4
7
|
stderr: Writable;
|
|
8
|
+
stdin?: NodeJS.ReadStream;
|
|
5
9
|
env?: NodeJS.ProcessEnv;
|
|
6
10
|
homeDirectory?: string;
|
|
11
|
+
promptAdapter?: PromptAdapter;
|
|
12
|
+
clientFactory?: (config: ReturnType<typeof loadResolvedConfig>) => ReximoClient;
|
|
7
13
|
};
|
|
8
14
|
export declare function runCli(args: string[], dependencies?: CliDependencies): Promise<number>;
|
package/src/lib/run-cli.js
CHANGED
|
@@ -6,30 +6,48 @@ const node_process_1 = tslib_1.__importDefault(require("node:process"));
|
|
|
6
6
|
const commander_1 = require("commander");
|
|
7
7
|
const config_1 = require("./config");
|
|
8
8
|
const output_1 = require("./output");
|
|
9
|
+
const prompts_1 = require("./prompts");
|
|
9
10
|
const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
|
|
10
11
|
const reximo_client_1 = require("../client/reximo-client");
|
|
11
12
|
function normalizeArgs(args) {
|
|
12
13
|
return args[0] === '--' ? args.slice(1) : args;
|
|
13
14
|
}
|
|
14
15
|
function toRuntimeDependencies(dependencies) {
|
|
16
|
+
const stdout = dependencies?.stdout ?? node_process_1.default.stdout;
|
|
17
|
+
const stdin = dependencies?.stdin ?? node_process_1.default.stdin;
|
|
15
18
|
return {
|
|
16
|
-
stdout
|
|
19
|
+
stdout,
|
|
17
20
|
stderr: dependencies?.stderr ?? node_process_1.default.stderr,
|
|
21
|
+
stdin,
|
|
18
22
|
env: dependencies?.env ?? node_process_1.default.env,
|
|
19
|
-
homeDirectory: dependencies?.homeDirectory ?? node_process_1.default.env['HOME'] ?? node_process_1.default.cwd()
|
|
23
|
+
homeDirectory: dependencies?.homeDirectory ?? node_process_1.default.env['HOME'] ?? node_process_1.default.cwd(),
|
|
24
|
+
promptAdapter: dependencies?.promptAdapter ??
|
|
25
|
+
(0, prompts_1.createDefaultPromptAdapter)({
|
|
26
|
+
stdin,
|
|
27
|
+
stdout
|
|
28
|
+
}),
|
|
29
|
+
clientFactory: dependencies?.clientFactory ?? reximo_client_1.createReximoClient
|
|
20
30
|
};
|
|
21
31
|
}
|
|
22
32
|
function getOutputMode(command) {
|
|
23
33
|
const opts = command.optsWithGlobals();
|
|
24
34
|
return opts.json ? "json" /* OutputMode.Json */ : "text" /* OutputMode.Text */;
|
|
25
35
|
}
|
|
36
|
+
function parseCsvOption(value) {
|
|
37
|
+
return value
|
|
38
|
+
.split(',')
|
|
39
|
+
.map((entry) => entry.trim())
|
|
40
|
+
.filter((entry) => entry.length > 0);
|
|
41
|
+
}
|
|
26
42
|
function renderConfigSummary(config, includeSensitive) {
|
|
27
43
|
return {
|
|
28
44
|
profile: config.profile,
|
|
29
45
|
configPath: config.configPath,
|
|
30
46
|
configFileFound: config.configFileFound,
|
|
31
47
|
apiBaseUrl: config.apiBaseUrl,
|
|
32
|
-
|
|
48
|
+
accessToken: (0, config_1.redactToken)(config.accessToken, includeSensitive),
|
|
49
|
+
refreshToken: (0, config_1.redactToken)(config.refreshToken, includeSensitive),
|
|
50
|
+
organizationId: config.organizationId,
|
|
33
51
|
sources: config.sources
|
|
34
52
|
};
|
|
35
53
|
}
|
|
@@ -42,6 +60,186 @@ function writeResult(command, dependencies, textLines, jsonValue) {
|
|
|
42
60
|
(0, output_1.writeLine)(dependencies.stdout, line);
|
|
43
61
|
}
|
|
44
62
|
}
|
|
63
|
+
function requireConfiguredToken(config, field) {
|
|
64
|
+
const value = config[field];
|
|
65
|
+
if (!value) {
|
|
66
|
+
throw new Error(field === "accessToken" /* ConfiguredTokenField.AccessToken */
|
|
67
|
+
? 'No access token is configured. Run `reximo login` first.'
|
|
68
|
+
: 'No refresh token is configured. Run `reximo login` first.');
|
|
69
|
+
}
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
function requireConfiguredOrganization(config) {
|
|
73
|
+
if (!config.organizationId) {
|
|
74
|
+
throw new Error('No organization is configured. Run `reximo login` first.');
|
|
75
|
+
}
|
|
76
|
+
return config.organizationId;
|
|
77
|
+
}
|
|
78
|
+
function createAuthenticatedContext(dependencies, configOptions) {
|
|
79
|
+
const config = (0, config_1.loadResolvedConfig)(configOptions);
|
|
80
|
+
return {
|
|
81
|
+
config,
|
|
82
|
+
client: dependencies.clientFactory(config),
|
|
83
|
+
accessToken: requireConfiguredToken(config, "accessToken" /* ConfiguredTokenField.AccessToken */),
|
|
84
|
+
organizationId: requireConfiguredOrganization(config)
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async function resolveRequiredValue(currentValue, label, prompt) {
|
|
88
|
+
if (currentValue?.trim()) {
|
|
89
|
+
return currentValue.trim();
|
|
90
|
+
}
|
|
91
|
+
const prompted = await prompt();
|
|
92
|
+
if (!prompted) {
|
|
93
|
+
throw new Error(`${label} is required`);
|
|
94
|
+
}
|
|
95
|
+
return prompted;
|
|
96
|
+
}
|
|
97
|
+
function chooseDefaultOrganization(organizations) {
|
|
98
|
+
const activeOrganizations = organizations.filter((organization) => organization.isActive);
|
|
99
|
+
if (activeOrganizations.length === 0) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
if (activeOrganizations.length === 1) {
|
|
103
|
+
return activeOrganizations[0] ?? null;
|
|
104
|
+
}
|
|
105
|
+
const defaults = activeOrganizations.filter((organization) => organization.isDefault);
|
|
106
|
+
return defaults.length === 1 ? (defaults[0] ?? null) : null;
|
|
107
|
+
}
|
|
108
|
+
function extractTenantIdFromAuthResponse(auth) {
|
|
109
|
+
const tenantId = auth.user?.tenantId;
|
|
110
|
+
if (typeof tenantId !== 'string') {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const normalized = tenantId.trim();
|
|
114
|
+
return normalized.length > 0 ? normalized : null;
|
|
115
|
+
}
|
|
116
|
+
async function resolveOrganizationContext(promptAdapter, organizations, organizationId) {
|
|
117
|
+
const activeOrganizations = organizations.filter((organization) => organization.isActive);
|
|
118
|
+
if (organizationId) {
|
|
119
|
+
const matched = activeOrganizations.find((organization) => organization.organizationId === organizationId);
|
|
120
|
+
if (!matched) {
|
|
121
|
+
throw new Error(`Organization ${organizationId} is not available for this user`);
|
|
122
|
+
}
|
|
123
|
+
return matched;
|
|
124
|
+
}
|
|
125
|
+
const defaultOrganization = chooseDefaultOrganization(activeOrganizations);
|
|
126
|
+
if (defaultOrganization) {
|
|
127
|
+
return defaultOrganization;
|
|
128
|
+
}
|
|
129
|
+
if (activeOrganizations.length === 0) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
if (!promptAdapter.isInteractive()) {
|
|
133
|
+
throw new Error('Multiple organizations are available. Re-run with --organization-id or use an interactive terminal.');
|
|
134
|
+
}
|
|
135
|
+
const choices = activeOrganizations.map((organization) => ({
|
|
136
|
+
value: organization.organizationId,
|
|
137
|
+
label: `${organization.displayName ?? organization.name} (${organization.organizationId})`
|
|
138
|
+
}));
|
|
139
|
+
const selectedOrganizationId = await promptAdapter.select('Select organization', choices);
|
|
140
|
+
return (activeOrganizations.find((organization) => organization.organizationId === selectedOrganizationId) ?? null);
|
|
141
|
+
}
|
|
142
|
+
function formatIssueIdentifier(issue) {
|
|
143
|
+
if (issue.project?.key) {
|
|
144
|
+
return `${issue.project.key}-${issue.issueNumber}`;
|
|
145
|
+
}
|
|
146
|
+
return `#${issue.issueNumber}`;
|
|
147
|
+
}
|
|
148
|
+
function formatIssueLines(result) {
|
|
149
|
+
if (result.data.length === 0) {
|
|
150
|
+
return ['No issues found.'];
|
|
151
|
+
}
|
|
152
|
+
const lines = [
|
|
153
|
+
`Issues: ${result.metadata.pagination.total} total (page ${result.metadata.pagination.page}/${Math.max(result.metadata.pagination.totalPages, 1)})`
|
|
154
|
+
];
|
|
155
|
+
for (const issue of result.data) {
|
|
156
|
+
lines.push(`${formatIssueIdentifier(issue)} [id:${issue.id}] ${issue.title} (${issue.status}, ${issue.priority})`);
|
|
157
|
+
}
|
|
158
|
+
return lines;
|
|
159
|
+
}
|
|
160
|
+
function formatIssueDetailLines(issue) {
|
|
161
|
+
return [
|
|
162
|
+
`Issue: ${formatIssueIdentifier(issue)} [id:${issue.id}]`,
|
|
163
|
+
`Title: ${issue.title}`,
|
|
164
|
+
`Status: ${issue.status}`,
|
|
165
|
+
`Priority: ${issue.priority}`,
|
|
166
|
+
`Project: ${issue.project?.name ?? '(none)'}`,
|
|
167
|
+
`Updated: ${issue.updatedAt}`
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
function formatProjectAccess(project) {
|
|
171
|
+
if (project.visibility === 'public') {
|
|
172
|
+
return 'public';
|
|
173
|
+
}
|
|
174
|
+
return project.isMember ? 'private member' : 'private';
|
|
175
|
+
}
|
|
176
|
+
function formatProjectLines(result) {
|
|
177
|
+
if (result.data.length === 0) {
|
|
178
|
+
return ['No projects found.'];
|
|
179
|
+
}
|
|
180
|
+
const lines = [
|
|
181
|
+
`Projects: ${result.metadata.pagination.total} total (page ${result.metadata.pagination.page}/${Math.max(result.metadata.pagination.totalPages, 1)})`
|
|
182
|
+
];
|
|
183
|
+
for (const project of result.data) {
|
|
184
|
+
lines.push(`${project.key} [id:${project.id}] ${project.name} (${formatProjectAccess(project)})`);
|
|
185
|
+
}
|
|
186
|
+
return lines;
|
|
187
|
+
}
|
|
188
|
+
function buildUpdateIssuePayload(options) {
|
|
189
|
+
const payload = {};
|
|
190
|
+
if (options.title !== undefined) {
|
|
191
|
+
payload['title'] = options.title;
|
|
192
|
+
}
|
|
193
|
+
if (options.descriptionMarkdown !== undefined) {
|
|
194
|
+
payload['descriptionMarkdown'] = options.descriptionMarkdown;
|
|
195
|
+
}
|
|
196
|
+
if (options.status !== undefined) {
|
|
197
|
+
payload['status'] = options.status;
|
|
198
|
+
}
|
|
199
|
+
if (options.statusDefinitionId !== undefined) {
|
|
200
|
+
payload['statusDefinitionId'] = options.statusDefinitionId;
|
|
201
|
+
}
|
|
202
|
+
if (options.priority !== undefined) {
|
|
203
|
+
payload['priority'] = options.priority;
|
|
204
|
+
}
|
|
205
|
+
if (options.position !== undefined) {
|
|
206
|
+
payload['position'] = options.position;
|
|
207
|
+
}
|
|
208
|
+
if (options.baseRevision !== undefined) {
|
|
209
|
+
payload['baseRevision'] = options.baseRevision;
|
|
210
|
+
}
|
|
211
|
+
if (options.clearParentIssue) {
|
|
212
|
+
payload['parentIssueId'] = null;
|
|
213
|
+
}
|
|
214
|
+
else if (options.parentIssueId !== undefined) {
|
|
215
|
+
payload['parentIssueId'] = options.parentIssueId;
|
|
216
|
+
}
|
|
217
|
+
if (options.clearEstimate) {
|
|
218
|
+
payload['estimate'] = null;
|
|
219
|
+
}
|
|
220
|
+
else if (options.estimate !== undefined) {
|
|
221
|
+
payload['estimate'] = options.estimate;
|
|
222
|
+
}
|
|
223
|
+
if (options.clearDueAt) {
|
|
224
|
+
payload['dueAt'] = null;
|
|
225
|
+
}
|
|
226
|
+
else if (options.dueAt !== undefined) {
|
|
227
|
+
payload['dueAt'] = options.dueAt;
|
|
228
|
+
}
|
|
229
|
+
if (Object.keys(payload).length === 0) {
|
|
230
|
+
throw new Error('At least one update field is required.');
|
|
231
|
+
}
|
|
232
|
+
return payload;
|
|
233
|
+
}
|
|
234
|
+
function buildIssuesSearchInput(options) {
|
|
235
|
+
if (options.status !== undefined || options.statuses !== undefined) {
|
|
236
|
+
return options;
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
...options,
|
|
240
|
+
statuses: ["backlog" /* IssueStatusOption.Backlog */, "in_progress" /* IssueStatusOption.InProgress */, "blocked" /* IssueStatusOption.Blocked */]
|
|
241
|
+
};
|
|
242
|
+
}
|
|
45
243
|
function createProgram(dependencies) {
|
|
46
244
|
const configOptions = {
|
|
47
245
|
env: dependencies.env,
|
|
@@ -62,30 +260,21 @@ function createProgram(dependencies) {
|
|
|
62
260
|
dependencies.stderr.write(message);
|
|
63
261
|
}
|
|
64
262
|
});
|
|
65
|
-
program
|
|
66
|
-
.command('hello')
|
|
67
|
-
.description('Print a greeting to validate the CLI entrypoint.')
|
|
68
|
-
.option('--name <name>', 'Name to include in the greeting')
|
|
69
|
-
.action(function action(options) {
|
|
70
|
-
const greeting = options.name ? `Hello, ${options.name}.` : 'Hello from @reximo/cli.';
|
|
71
|
-
writeResult(this, dependencies, [greeting], {
|
|
72
|
-
command: 'hello',
|
|
73
|
-
greeting
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
263
|
program
|
|
77
264
|
.command('info')
|
|
78
265
|
.description('Show package and runtime information for diagnostics.')
|
|
79
266
|
.action(function action() {
|
|
80
267
|
const config = (0, config_1.loadResolvedConfig)(configOptions);
|
|
81
|
-
const client =
|
|
268
|
+
const client = dependencies.clientFactory(config);
|
|
82
269
|
writeResult(this, dependencies, [
|
|
83
270
|
`${package_json_1.default.name} ${package_json_1.default.version}`,
|
|
84
271
|
`Node: ${node_process_1.default.version}`,
|
|
85
272
|
`Platform: ${node_process_1.default.platform}/${node_process_1.default.arch}`,
|
|
86
273
|
`Profile: ${config.profile}`,
|
|
87
|
-
`API base URL: ${config.apiBaseUrl ??
|
|
88
|
-
`
|
|
274
|
+
`API base URL: ${config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL}`,
|
|
275
|
+
`Access token configured: ${config.accessToken ? 'yes' : 'no'}`,
|
|
276
|
+
`Refresh token configured: ${config.refreshToken ? 'yes' : 'no'}`,
|
|
277
|
+
`Organization: ${config.organizationId ?? '(not configured)'}`
|
|
89
278
|
], {
|
|
90
279
|
command: 'info',
|
|
91
280
|
package: {
|
|
@@ -101,9 +290,139 @@ function createProgram(dependencies) {
|
|
|
101
290
|
profile: config.profile,
|
|
102
291
|
apiBaseUrl: config.apiBaseUrl,
|
|
103
292
|
configuredForApi: client.isConfigured(),
|
|
104
|
-
|
|
293
|
+
hasAccessToken: Boolean(config.accessToken),
|
|
294
|
+
hasRefreshToken: Boolean(config.refreshToken),
|
|
295
|
+
organizationId: config.organizationId
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
const issuesCommand = program.command('issues').description('Manage issues.');
|
|
300
|
+
issuesCommand
|
|
301
|
+
.command('search')
|
|
302
|
+
.alias('list')
|
|
303
|
+
.description('Search visible issues within the configured organization.')
|
|
304
|
+
.option('--page <page>', 'Page number (1-based)', Number)
|
|
305
|
+
.option('--page-size <pageSize>', 'Items per page', Number)
|
|
306
|
+
.option('--project-id <projectId>', 'Restrict to one project id', Number)
|
|
307
|
+
.option('--label-id <labelId>', 'Restrict to one label id', Number)
|
|
308
|
+
.option('--assignee-user-id <assigneeUserId>', 'Restrict to one assignee user id', Number)
|
|
309
|
+
.option('--watcher-user-id <watcherUserId>', 'Restrict to one watcher user id', Number)
|
|
310
|
+
.option('--activity-actor-user-id <activityActorUserId>', 'Restrict to issues with activity authored by one user', Number)
|
|
311
|
+
.option('--search <search>', 'Search by issue identifier, title, or description')
|
|
312
|
+
.option('--status <status>', 'Restrict to one status')
|
|
313
|
+
.option('--statuses <statuses>', 'Comma-separated list of statuses', parseCsvOption)
|
|
314
|
+
.option('--priority <priority>', 'Restrict to one priority')
|
|
315
|
+
.option('--sort-by <sortBy>', 'Sort field')
|
|
316
|
+
.option('--sort-order <sortOrder>', 'Sort direction')
|
|
317
|
+
.action(async function action(options) {
|
|
318
|
+
const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
|
|
319
|
+
const result = await client.listIssues({
|
|
320
|
+
accessToken,
|
|
321
|
+
organizationId,
|
|
322
|
+
...buildIssuesSearchInput(options)
|
|
323
|
+
});
|
|
324
|
+
writeResult(this, dependencies, formatIssueLines(result), {
|
|
325
|
+
command: 'issues.search',
|
|
326
|
+
result
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
issuesCommand
|
|
330
|
+
.command('create')
|
|
331
|
+
.description('Create one issue in the configured organization.')
|
|
332
|
+
.option('--title <title>', 'Issue title')
|
|
333
|
+
.option('--description-markdown <descriptionMarkdown>', 'Issue description in markdown')
|
|
334
|
+
.option('--status <status>', 'Issue status')
|
|
335
|
+
.option('--status-definition-id <statusDefinitionId>', 'Issue status definition id', Number)
|
|
336
|
+
.option('--priority <priority>', 'Issue priority')
|
|
337
|
+
.option('--project-id <projectId>', 'Project id', Number)
|
|
338
|
+
.option('--parent-issue-id <parentIssueId>', 'Parent issue id', Number)
|
|
339
|
+
.option('--position <position>', 'Issue position', Number)
|
|
340
|
+
.option('--estimate <estimate>', 'Issue estimate', Number)
|
|
341
|
+
.option('--due-at <dueAt>', 'Issue due date as an ISO-8601 string')
|
|
342
|
+
.action(async function action(options) {
|
|
343
|
+
const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
|
|
344
|
+
if (!options.title?.trim()) {
|
|
345
|
+
throw new Error('Title is required');
|
|
346
|
+
}
|
|
347
|
+
const issue = await client.createIssue({
|
|
348
|
+
accessToken,
|
|
349
|
+
organizationId,
|
|
350
|
+
issue: {
|
|
351
|
+
...options,
|
|
352
|
+
title: options.title.trim()
|
|
105
353
|
}
|
|
106
354
|
});
|
|
355
|
+
writeResult(this, dependencies, formatIssueDetailLines(issue), {
|
|
356
|
+
command: 'issues.create',
|
|
357
|
+
issue
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
issuesCommand
|
|
361
|
+
.command('update <issueId>')
|
|
362
|
+
.description('Update one issue by id in the configured organization.')
|
|
363
|
+
.option('--title <title>', 'Issue title')
|
|
364
|
+
.option('--description-markdown <descriptionMarkdown>', 'Issue description in markdown')
|
|
365
|
+
.option('--status <status>', 'Issue status')
|
|
366
|
+
.option('--status-definition-id <statusDefinitionId>', 'Issue status definition id', Number)
|
|
367
|
+
.option('--priority <priority>', 'Issue priority')
|
|
368
|
+
.option('--parent-issue-id <parentIssueId>', 'Parent issue id', Number)
|
|
369
|
+
.option('--position <position>', 'Issue position', Number)
|
|
370
|
+
.option('--estimate <estimate>', 'Issue estimate', Number)
|
|
371
|
+
.option('--due-at <dueAt>', 'Issue due date as an ISO-8601 string')
|
|
372
|
+
.option('--clear-parent-issue', 'Clear the current parent issue')
|
|
373
|
+
.option('--clear-estimate', 'Clear the current estimate')
|
|
374
|
+
.option('--clear-due-at', 'Clear the current due date')
|
|
375
|
+
.option('--base-revision <baseRevision>', 'Optimistic concurrency token from the last issue read')
|
|
376
|
+
.action(async function action(issueId, options) {
|
|
377
|
+
const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
|
|
378
|
+
const issue = await client.updateIssue({
|
|
379
|
+
accessToken,
|
|
380
|
+
organizationId,
|
|
381
|
+
issueId,
|
|
382
|
+
issue: buildUpdateIssuePayload(options)
|
|
383
|
+
});
|
|
384
|
+
writeResult(this, dependencies, formatIssueDetailLines(issue), {
|
|
385
|
+
command: 'issues.update',
|
|
386
|
+
issue
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
issuesCommand
|
|
390
|
+
.command('delete <issueId>')
|
|
391
|
+
.description('Delete one issue by id in the configured organization.')
|
|
392
|
+
.action(async function action(issueId) {
|
|
393
|
+
const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
|
|
394
|
+
await client.deleteIssue({
|
|
395
|
+
accessToken,
|
|
396
|
+
organizationId,
|
|
397
|
+
issueId
|
|
398
|
+
});
|
|
399
|
+
writeResult(this, dependencies, [`Issue ${issueId} deleted.`], {
|
|
400
|
+
command: 'issues.delete',
|
|
401
|
+
issueId,
|
|
402
|
+
deleted: true
|
|
403
|
+
});
|
|
404
|
+
});
|
|
405
|
+
const projectsCommand = program.command('projects').description('Manage projects.');
|
|
406
|
+
projectsCommand
|
|
407
|
+
.command('list')
|
|
408
|
+
.description('List projects visible to the current user in the configured organization.')
|
|
409
|
+
.option('--page <page>', 'Page number (1-based)', Number)
|
|
410
|
+
.option('--page-size <pageSize>', 'Items per page', Number)
|
|
411
|
+
.option('--search <search>', 'Search by project name')
|
|
412
|
+
.option('--visibility <visibility>', 'Restrict to one visibility')
|
|
413
|
+
.option('--sort-by <sortBy>', 'Sort field')
|
|
414
|
+
.option('--sort-order <sortOrder>', 'Sort direction')
|
|
415
|
+
.action(async function action(options) {
|
|
416
|
+
const { client, accessToken, organizationId } = createAuthenticatedContext(dependencies, configOptions);
|
|
417
|
+
const result = await client.listProjects({
|
|
418
|
+
accessToken,
|
|
419
|
+
organizationId,
|
|
420
|
+
...options
|
|
421
|
+
});
|
|
422
|
+
writeResult(this, dependencies, formatProjectLines(result), {
|
|
423
|
+
command: 'projects.list',
|
|
424
|
+
result
|
|
425
|
+
});
|
|
107
426
|
});
|
|
108
427
|
const configCommand = program
|
|
109
428
|
.command('config')
|
|
@@ -118,13 +437,115 @@ function createProgram(dependencies) {
|
|
|
118
437
|
`Profile: ${config.profile}`,
|
|
119
438
|
`Config path: ${config.configPath}`,
|
|
120
439
|
`Config file found: ${config.configFileFound ? 'yes' : 'no'}`,
|
|
121
|
-
`API base URL: ${config.apiBaseUrl ??
|
|
122
|
-
`
|
|
440
|
+
`API base URL: ${config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL}`,
|
|
441
|
+
`Access token: ${(0, config_1.redactToken)(config.accessToken, Boolean(options.includeSensitive)) ?? '(not configured)'}`,
|
|
442
|
+
`Refresh token: ${(0, config_1.redactToken)(config.refreshToken, Boolean(options.includeSensitive)) ?? '(not configured)'}`,
|
|
443
|
+
`Organization: ${config.organizationId ?? '(not configured)'}`
|
|
123
444
|
], {
|
|
124
445
|
command: 'config.show',
|
|
125
446
|
config: renderConfigSummary(config, Boolean(options.includeSensitive))
|
|
126
447
|
});
|
|
127
448
|
});
|
|
449
|
+
program
|
|
450
|
+
.command('login')
|
|
451
|
+
.description('Authenticate with the Reximo API and save auth state for the active profile.')
|
|
452
|
+
.option('--email <email>', 'Email address to authenticate with')
|
|
453
|
+
.option('--password <password>', 'Password to authenticate with')
|
|
454
|
+
.option('--organization-id <organizationId>', 'Organization ID to use as x-tenant-id')
|
|
455
|
+
.action(async function action(options) {
|
|
456
|
+
const config = (0, config_1.loadResolvedConfig)(configOptions);
|
|
457
|
+
const client = dependencies.clientFactory(config);
|
|
458
|
+
const email = await resolveRequiredValue(options.email, 'Email', () => dependencies.promptAdapter.promptText('Email'));
|
|
459
|
+
const password = await resolveRequiredValue(options.password, 'Password', () => dependencies.promptAdapter.promptPassword('Password'));
|
|
460
|
+
const loginResponse = await client.login({
|
|
461
|
+
email,
|
|
462
|
+
password,
|
|
463
|
+
organizationId: options.organizationId ?? null
|
|
464
|
+
});
|
|
465
|
+
const initialOrganizationId = options.organizationId ?? extractTenantIdFromAuthResponse(loginResponse);
|
|
466
|
+
const organizations = await client.getMyOrganizations({
|
|
467
|
+
accessToken: loginResponse.accessToken,
|
|
468
|
+
organizationId: initialOrganizationId
|
|
469
|
+
});
|
|
470
|
+
const selectedOrganization = await resolveOrganizationContext(dependencies.promptAdapter, organizations, options.organizationId);
|
|
471
|
+
const shouldRefreshForOrganizationSwitch = Boolean(selectedOrganization?.organizationId) &&
|
|
472
|
+
selectedOrganization?.organizationId !== initialOrganizationId;
|
|
473
|
+
const scopedAuth = shouldRefreshForOrganizationSwitch && selectedOrganization?.organizationId
|
|
474
|
+
? await client.refreshToken({
|
|
475
|
+
refreshToken: loginResponse.refreshToken,
|
|
476
|
+
organizationId: selectedOrganization.organizationId
|
|
477
|
+
})
|
|
478
|
+
: loginResponse;
|
|
479
|
+
(0, config_1.saveProfileConfig)({
|
|
480
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
481
|
+
accessToken: scopedAuth.accessToken,
|
|
482
|
+
refreshToken: scopedAuth.refreshToken,
|
|
483
|
+
organizationId: selectedOrganization?.organizationId ?? null
|
|
484
|
+
}, configOptions);
|
|
485
|
+
writeResult(this, dependencies, [
|
|
486
|
+
'Login successful.',
|
|
487
|
+
`Profile: ${config.profile}`,
|
|
488
|
+
`API base URL: ${config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL}`,
|
|
489
|
+
`Organization: ${selectedOrganization?.organizationId ?? '(none selected)'}`,
|
|
490
|
+
'Access token saved: yes',
|
|
491
|
+
'Refresh token saved: yes'
|
|
492
|
+
], {
|
|
493
|
+
command: 'login',
|
|
494
|
+
profile: config.profile,
|
|
495
|
+
apiBaseUrl: config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL,
|
|
496
|
+
organizationId: selectedOrganization?.organizationId ?? null,
|
|
497
|
+
accessTokenSaved: true,
|
|
498
|
+
refreshTokenSaved: true
|
|
499
|
+
});
|
|
500
|
+
});
|
|
501
|
+
program
|
|
502
|
+
.command('me')
|
|
503
|
+
.alias('profile')
|
|
504
|
+
.description('Display the current authenticated user profile from /api/v1/auth/me.')
|
|
505
|
+
.action(async function action() {
|
|
506
|
+
const config = (0, config_1.loadResolvedConfig)(configOptions);
|
|
507
|
+
const client = dependencies.clientFactory(config);
|
|
508
|
+
const profile = await client.getMe({
|
|
509
|
+
accessToken: requireConfiguredToken(config, "accessToken" /* ConfiguredTokenField.AccessToken */),
|
|
510
|
+
organizationId: requireConfiguredOrganization(config)
|
|
511
|
+
});
|
|
512
|
+
writeResult(this, dependencies, [
|
|
513
|
+
`User ID: ${profile.userId}`,
|
|
514
|
+
`Email: ${profile.email ?? '(not set)'}`,
|
|
515
|
+
`Name: ${profile.displayName ?? profile.name ?? '(not set)'}`,
|
|
516
|
+
`Organization: ${profile.tenantId}`,
|
|
517
|
+
`Roles: ${profile.roles?.join(', ') || '(none)'}`,
|
|
518
|
+
`Permissions: ${profile.permissions?.join(', ') || '(none)'}`
|
|
519
|
+
], {
|
|
520
|
+
command: 'me',
|
|
521
|
+
profile
|
|
522
|
+
});
|
|
523
|
+
});
|
|
524
|
+
program
|
|
525
|
+
.command('logout')
|
|
526
|
+
.description('Log out of the current profile and remove stored tokens.')
|
|
527
|
+
.action(async function action() {
|
|
528
|
+
const config = (0, config_1.loadResolvedConfig)(configOptions);
|
|
529
|
+
const client = dependencies.clientFactory(config);
|
|
530
|
+
const accessToken = requireConfiguredToken(config, "accessToken" /* ConfiguredTokenField.AccessToken */);
|
|
531
|
+
const refreshToken = requireConfiguredToken(config, "refreshToken" /* ConfiguredTokenField.RefreshToken */);
|
|
532
|
+
const organizationId = requireConfiguredOrganization(config);
|
|
533
|
+
const response = await client.logout({
|
|
534
|
+
accessToken,
|
|
535
|
+
refreshToken,
|
|
536
|
+
organizationId
|
|
537
|
+
});
|
|
538
|
+
(0, config_1.saveProfileConfig)({
|
|
539
|
+
apiBaseUrl: config.apiBaseUrl ?? config_1.DEFAULT_API_BASE_URL,
|
|
540
|
+
accessToken: null,
|
|
541
|
+
refreshToken: null
|
|
542
|
+
}, configOptions);
|
|
543
|
+
writeResult(this, dependencies, [response.message ?? 'Logged out successfully.'], {
|
|
544
|
+
command: 'logout',
|
|
545
|
+
message: response.message ?? 'Logged out successfully',
|
|
546
|
+
tokensCleared: true
|
|
547
|
+
});
|
|
548
|
+
});
|
|
128
549
|
return program;
|
|
129
550
|
}
|
|
130
551
|
async function runCli(args, dependencies) {
|
package/src/lib/run-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../../../../packages/reximo-cli/src/lib/run-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../../../../packages/reximo-cli/src/lib/run-cli.ts"],"names":[],"mappings":"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"}
|