@novateva/teurtask-cli 0.1.0
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 +263 -0
- package/dist/bin/teurtask-prod.d.ts +3 -0
- package/dist/bin/teurtask-prod.d.ts.map +1 -0
- package/dist/bin/teurtask-prod.js +6 -0
- package/dist/bin/teurtask-prod.js.map +1 -0
- package/dist/bin/teurtask.d.ts +3 -0
- package/dist/bin/teurtask.d.ts.map +1 -0
- package/dist/bin/teurtask.js +5 -0
- package/dist/bin/teurtask.js.map +1 -0
- package/dist/src/auth/index.d.ts +13 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +44 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/login-server.d.ts +14 -0
- package/dist/src/auth/login-server.d.ts.map +1 -0
- package/dist/src/auth/login-server.js +84 -0
- package/dist/src/auth/login-server.js.map +1 -0
- package/dist/src/commands/auth.d.ts +3 -0
- package/dist/src/commands/auth.d.ts.map +1 -0
- package/dist/src/commands/auth.js +83 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/comments.d.ts +3 -0
- package/dist/src/commands/comments.d.ts.map +1 -0
- package/dist/src/commands/comments.js +81 -0
- package/dist/src/commands/comments.js.map +1 -0
- package/dist/src/commands/documents.d.ts +3 -0
- package/dist/src/commands/documents.d.ts.map +1 -0
- package/dist/src/commands/documents.js +26 -0
- package/dist/src/commands/documents.js.map +1 -0
- package/dist/src/commands/env.d.ts +3 -0
- package/dist/src/commands/env.d.ts.map +1 -0
- package/dist/src/commands/env.js +71 -0
- package/dist/src/commands/env.js.map +1 -0
- package/dist/src/commands/goals.d.ts +3 -0
- package/dist/src/commands/goals.d.ts.map +1 -0
- package/dist/src/commands/goals.js +109 -0
- package/dist/src/commands/goals.js.map +1 -0
- package/dist/src/commands/notifications.d.ts +3 -0
- package/dist/src/commands/notifications.d.ts.map +1 -0
- package/dist/src/commands/notifications.js +77 -0
- package/dist/src/commands/notifications.js.map +1 -0
- package/dist/src/commands/phases.d.ts +3 -0
- package/dist/src/commands/phases.d.ts.map +1 -0
- package/dist/src/commands/phases.js +207 -0
- package/dist/src/commands/phases.js.map +1 -0
- package/dist/src/commands/projects.d.ts +3 -0
- package/dist/src/commands/projects.d.ts.map +1 -0
- package/dist/src/commands/projects.js +192 -0
- package/dist/src/commands/projects.js.map +1 -0
- package/dist/src/commands/schedules.d.ts +3 -0
- package/dist/src/commands/schedules.d.ts.map +1 -0
- package/dist/src/commands/schedules.js +155 -0
- package/dist/src/commands/schedules.js.map +1 -0
- package/dist/src/commands/scores.d.ts +3 -0
- package/dist/src/commands/scores.d.ts.map +1 -0
- package/dist/src/commands/scores.js +136 -0
- package/dist/src/commands/scores.js.map +1 -0
- package/dist/src/commands/sprints.d.ts +3 -0
- package/dist/src/commands/sprints.d.ts.map +1 -0
- package/dist/src/commands/sprints.js +218 -0
- package/dist/src/commands/sprints.js.map +1 -0
- package/dist/src/commands/tags.d.ts +3 -0
- package/dist/src/commands/tags.d.ts.map +1 -0
- package/dist/src/commands/tags.js +99 -0
- package/dist/src/commands/tags.js.map +1 -0
- package/dist/src/commands/tasks.d.ts +3 -0
- package/dist/src/commands/tasks.d.ts.map +1 -0
- package/dist/src/commands/tasks.js +355 -0
- package/dist/src/commands/tasks.js.map +1 -0
- package/dist/src/commands/users.d.ts +3 -0
- package/dist/src/commands/users.d.ts.map +1 -0
- package/dist/src/commands/users.js +172 -0
- package/dist/src/commands/users.js.map +1 -0
- package/dist/src/config/environments.d.ts +3 -0
- package/dist/src/config/environments.d.ts.map +1 -0
- package/dist/src/config/environments.js +18 -0
- package/dist/src/config/environments.js.map +1 -0
- package/dist/src/config/index.d.ts +7 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +67 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/paths.d.ts +6 -0
- package/dist/src/config/paths.d.ts.map +1 -0
- package/dist/src/config/paths.js +9 -0
- package/dist/src/config/paths.js.map +1 -0
- package/dist/src/http/client.d.ts +8 -0
- package/dist/src/http/client.d.ts.map +1 -0
- package/dist/src/http/client.js +68 -0
- package/dist/src/http/client.js.map +1 -0
- package/dist/src/http/errors.d.ts +7 -0
- package/dist/src/http/errors.d.ts.map +1 -0
- package/dist/src/http/errors.js +34 -0
- package/dist/src/http/errors.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +76 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/output/formatter.d.ts +10 -0
- package/dist/src/output/formatter.d.ts.map +1 -0
- package/dist/src/output/formatter.js +57 -0
- package/dist/src/output/formatter.js.map +1 -0
- package/dist/src/output/json.d.ts +6 -0
- package/dist/src/output/json.d.ts.map +1 -0
- package/dist/src/output/json.js +16 -0
- package/dist/src/output/json.js.map +1 -0
- package/dist/src/output/table.d.ts +9 -0
- package/dist/src/output/table.d.ts.map +1 -0
- package/dist/src/output/table.js +32 -0
- package/dist/src/output/table.js.map +1 -0
- package/dist/src/types/api.d.ts +172 -0
- package/dist/src/types/api.d.ts.map +1 -0
- package/dist/src/types/api.js +2 -0
- package/dist/src/types/api.js.map +1 -0
- package/dist/src/types/common.d.ts +18 -0
- package/dist/src/types/common.d.ts.map +1 -0
- package/dist/src/types/common.js +2 -0
- package/dist/src/types/common.js.map +1 -0
- package/dist/src/types/config.d.ts +22 -0
- package/dist/src/types/config.d.ts.map +1 -0
- package/dist/src/types/config.js +2 -0
- package/dist/src/types/config.js.map +1 -0
- package/dist/src/utils/spinner.d.ts +6 -0
- package/dist/src/utils/spinner.d.ts.map +1 -0
- package/dist/src/utils/spinner.js +35 -0
- package/dist/src/utils/spinner.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { apiGet, apiPost, apiPut, apiDelete } from '../http/client.js';
|
|
2
|
+
import { getContext, outputList, outputDetail, outputSuccess, outputError } from '../output/formatter.js';
|
|
3
|
+
import { withSpinner } from '../utils/spinner.js';
|
|
4
|
+
export function registerScoreCommands(program) {
|
|
5
|
+
const score = program.command('score').description('Score management commands');
|
|
6
|
+
score
|
|
7
|
+
.command('list')
|
|
8
|
+
.description('List all scores')
|
|
9
|
+
.option('--task-id <id>', 'Filter by task ID')
|
|
10
|
+
.option('--with-user', 'Include user data in response')
|
|
11
|
+
.action(async (opts, cmd) => {
|
|
12
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
13
|
+
try {
|
|
14
|
+
const params = {};
|
|
15
|
+
if (opts.taskId !== undefined)
|
|
16
|
+
params.task_id = Number(opts.taskId);
|
|
17
|
+
if (opts.withUser)
|
|
18
|
+
params.with_user = true;
|
|
19
|
+
const data = await withSpinner('Fetching scores...', () => apiGet('score', params));
|
|
20
|
+
outputList(ctx, data, [
|
|
21
|
+
{ key: 'id', header: 'ID', width: 6 },
|
|
22
|
+
{ key: 'score', header: 'Score', width: 10 },
|
|
23
|
+
{ key: 'state', header: 'State', width: 15 },
|
|
24
|
+
{ key: 'taskId', header: 'Task ID', width: 10 },
|
|
25
|
+
{ key: 'dedicated_hours', header: 'Dedicated Hours', width: 16 },
|
|
26
|
+
{ key: 'dificulty', header: 'Difficulty', width: 12 },
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
outputError(ctx, err);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
score
|
|
34
|
+
.command('get <id>')
|
|
35
|
+
.description('Get scores for a task by ID')
|
|
36
|
+
.action(async (id, _, cmd) => {
|
|
37
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
38
|
+
try {
|
|
39
|
+
const data = await withSpinner('Fetching score...', () => apiGet(`score/${id}`));
|
|
40
|
+
outputDetail(ctx, data, {
|
|
41
|
+
id: 'ID',
|
|
42
|
+
score: 'Score',
|
|
43
|
+
state: 'State',
|
|
44
|
+
taskId: 'Task ID',
|
|
45
|
+
deadline_task: 'Deadline',
|
|
46
|
+
dedicated_hours: 'Dedicated Hours',
|
|
47
|
+
dificulty: 'Difficulty',
|
|
48
|
+
description: 'Description',
|
|
49
|
+
created_at: 'Created At',
|
|
50
|
+
updated_at: 'Updated At',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
outputError(ctx, err);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
score
|
|
58
|
+
.command('create')
|
|
59
|
+
.description('Create a new score')
|
|
60
|
+
.requiredOption('--score <n>', 'Score value')
|
|
61
|
+
.requiredOption('--state <state>', 'Score state')
|
|
62
|
+
.requiredOption('--deadline-task <date>', 'Task deadline date')
|
|
63
|
+
.requiredOption('--task-id <n>', 'Task ID')
|
|
64
|
+
.requiredOption('--dedicated-hours <n>', 'Dedicated hours')
|
|
65
|
+
.requiredOption('--dificulty <dificulty>', 'Difficulty level')
|
|
66
|
+
.option('--description <text>', 'Score description')
|
|
67
|
+
.action(async (opts, cmd) => {
|
|
68
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
69
|
+
try {
|
|
70
|
+
const body = {
|
|
71
|
+
score: Number(opts.score),
|
|
72
|
+
state: opts.state,
|
|
73
|
+
deadline_task: opts.deadlineTask,
|
|
74
|
+
task_id: Number(opts.taskId),
|
|
75
|
+
dedicated_hours: Number(opts.dedicatedHours),
|
|
76
|
+
dificulty: opts.dificulty,
|
|
77
|
+
};
|
|
78
|
+
if (opts.description !== undefined)
|
|
79
|
+
body.description = opts.description;
|
|
80
|
+
const data = await withSpinner('Creating score...', () => apiPost('score', body));
|
|
81
|
+
outputSuccess(ctx, 'Score created successfully', data);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
outputError(ctx, err);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
score
|
|
88
|
+
.command('update <id>')
|
|
89
|
+
.description('Update an existing score')
|
|
90
|
+
.option('--score <n>', 'Score value')
|
|
91
|
+
.option('--state <state>', 'Score state')
|
|
92
|
+
.option('--deadline-task <date>', 'Task deadline date')
|
|
93
|
+
.option('--task-id <n>', 'Task ID')
|
|
94
|
+
.option('--dedicated-hours <n>', 'Dedicated hours')
|
|
95
|
+
.option('--dificulty <dificulty>', 'Difficulty level')
|
|
96
|
+
.option('--description <text>', 'Score description')
|
|
97
|
+
.action(async (id, opts, cmd) => {
|
|
98
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
99
|
+
try {
|
|
100
|
+
const body = {};
|
|
101
|
+
if (opts.score !== undefined)
|
|
102
|
+
body.score = Number(opts.score);
|
|
103
|
+
if (opts.state !== undefined)
|
|
104
|
+
body.state = opts.state;
|
|
105
|
+
if (opts.deadlineTask !== undefined)
|
|
106
|
+
body.deadline_task = opts.deadlineTask;
|
|
107
|
+
if (opts.taskId !== undefined)
|
|
108
|
+
body.task_id = Number(opts.taskId);
|
|
109
|
+
if (opts.dedicatedHours !== undefined)
|
|
110
|
+
body.dedicated_hours = Number(opts.dedicatedHours);
|
|
111
|
+
if (opts.dificulty !== undefined)
|
|
112
|
+
body.dificulty = opts.dificulty;
|
|
113
|
+
if (opts.description !== undefined)
|
|
114
|
+
body.description = opts.description;
|
|
115
|
+
const data = await withSpinner('Updating score...', () => apiPut(`score/${id}`, body));
|
|
116
|
+
outputSuccess(ctx, `Score ${id} updated successfully`, data);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
outputError(ctx, err);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
score
|
|
123
|
+
.command('delete <id>')
|
|
124
|
+
.description('Delete a score')
|
|
125
|
+
.action(async (id, _, cmd) => {
|
|
126
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
127
|
+
try {
|
|
128
|
+
await withSpinner('Deleting score...', () => apiDelete(`score/${id}`));
|
|
129
|
+
outputSuccess(ctx, `Score ${id} deleted successfully`);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
outputError(ctx, err);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=scores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scores.js","sourceRoot":"","sources":["../../../src/commands/scores.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../../src/commands/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqM7D"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { apiGet, apiPost, apiPut, apiDelete } from '../http/client.js';
|
|
2
|
+
import { getContext, outputList, outputDetail, outputSuccess, outputError } from '../output/formatter.js';
|
|
3
|
+
import { withSpinner } from '../utils/spinner.js';
|
|
4
|
+
function parseIds(value) {
|
|
5
|
+
return value
|
|
6
|
+
.split(',')
|
|
7
|
+
.map((s) => s.trim())
|
|
8
|
+
.filter(Boolean)
|
|
9
|
+
.map(Number);
|
|
10
|
+
}
|
|
11
|
+
function truncate(value, length) {
|
|
12
|
+
const str = String(value ?? '');
|
|
13
|
+
return str.length > length ? str.slice(0, length - 1) + '…' : str;
|
|
14
|
+
}
|
|
15
|
+
export function registerSprintCommands(program) {
|
|
16
|
+
const sprint = program.command('sprint').description('Manage sprints');
|
|
17
|
+
// list
|
|
18
|
+
sprint
|
|
19
|
+
.command('list')
|
|
20
|
+
.description('List sprints')
|
|
21
|
+
.option('--project-id <id>', 'Filter by project ID')
|
|
22
|
+
.option('--phase-id <id>', 'Filter by phase ID')
|
|
23
|
+
.option('--archived', 'Filter to archived sprints (state filter)')
|
|
24
|
+
.option('--page <n>', 'Page number')
|
|
25
|
+
.option('--page-size <n>', 'Page size')
|
|
26
|
+
.option('--with-project', 'Include project relation')
|
|
27
|
+
.option('--with-phase', 'Include phase relation')
|
|
28
|
+
.option('--with-users', 'Include users relation')
|
|
29
|
+
.option('--with-tasks', 'Include tasks relation')
|
|
30
|
+
.option('--with-sprint-metrics', 'Include sprint metrics relation')
|
|
31
|
+
.action(async (opts, cmd) => {
|
|
32
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
33
|
+
try {
|
|
34
|
+
const params = {};
|
|
35
|
+
if (opts.projectId !== undefined)
|
|
36
|
+
params['project_id'] = opts.projectId;
|
|
37
|
+
if (opts.phaseId !== undefined)
|
|
38
|
+
params['phase_id'] = opts.phaseId;
|
|
39
|
+
if (opts.archived)
|
|
40
|
+
params['state'] = 'archived';
|
|
41
|
+
if (opts.page !== undefined)
|
|
42
|
+
params['page'] = opts.page;
|
|
43
|
+
if (opts.pageSize !== undefined)
|
|
44
|
+
params['page_size'] = opts.pageSize;
|
|
45
|
+
if (opts.withProject)
|
|
46
|
+
params['with_project'] = true;
|
|
47
|
+
if (opts.withPhase)
|
|
48
|
+
params['with_phase'] = true;
|
|
49
|
+
if (opts.withUsers)
|
|
50
|
+
params['with_users'] = true;
|
|
51
|
+
if (opts.withTasks)
|
|
52
|
+
params['with_tasks'] = true;
|
|
53
|
+
if (opts.withSprintMetrics)
|
|
54
|
+
params['with_sprint_metrics'] = true;
|
|
55
|
+
const data = await withSpinner('Fetching sprints...', () => apiGet('/sprint', params));
|
|
56
|
+
const rows = (Array.isArray(data) ? data : data.data) ?? [];
|
|
57
|
+
const displayRows = rows.map((r) => ({
|
|
58
|
+
...r,
|
|
59
|
+
description: truncate(r['description'], 30),
|
|
60
|
+
}));
|
|
61
|
+
outputList(ctx, displayRows, [
|
|
62
|
+
{ key: 'id', header: 'ID', width: 10 },
|
|
63
|
+
{ key: 'description', header: 'Description', width: 32 },
|
|
64
|
+
{ key: 'start_date', header: 'Start Date', width: 14 },
|
|
65
|
+
{ key: 'deadline', header: 'Deadline', width: 14 },
|
|
66
|
+
{ key: 'state', header: 'State', width: 12 },
|
|
67
|
+
{ key: 'project_id', header: 'Project ID', width: 12 },
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
outputError(ctx, err);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// get
|
|
75
|
+
sprint
|
|
76
|
+
.command('get <id>')
|
|
77
|
+
.description('Get a sprint by ID')
|
|
78
|
+
.action(async (id, opts, cmd) => {
|
|
79
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
80
|
+
try {
|
|
81
|
+
const data = await withSpinner(`Fetching sprint ${id}...`, () => apiGet(`/sprint/${id}`));
|
|
82
|
+
outputDetail(ctx, data);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
outputError(ctx, err);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// create
|
|
89
|
+
sprint
|
|
90
|
+
.command('create')
|
|
91
|
+
.description('Create a new sprint')
|
|
92
|
+
.requiredOption('--project-id <id>', 'Project ID')
|
|
93
|
+
.requiredOption('--start-date <date>', 'Start date (YYYY-MM-DD)')
|
|
94
|
+
.requiredOption('--deadline <date>', 'Deadline date (YYYY-MM-DD)')
|
|
95
|
+
.option('--phase-id <id>', 'Phase ID')
|
|
96
|
+
.option('--description <text>', 'Sprint description')
|
|
97
|
+
.option('--should-fill-daily', 'Enable daily fill (boolean flag)')
|
|
98
|
+
.option('--user-ids <ids>', 'Comma-separated user IDs')
|
|
99
|
+
.option('--task-ids <ids>', 'Comma-separated task IDs')
|
|
100
|
+
.option('--responsible-ids <ids>', 'Comma-separated responsible user IDs')
|
|
101
|
+
.action(async (opts, cmd) => {
|
|
102
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
103
|
+
try {
|
|
104
|
+
const body = {
|
|
105
|
+
project_id: opts.projectId,
|
|
106
|
+
start_date: opts.startDate,
|
|
107
|
+
deadline: opts.deadline,
|
|
108
|
+
};
|
|
109
|
+
if (opts.phaseId !== undefined)
|
|
110
|
+
body['phase_id'] = opts.phaseId;
|
|
111
|
+
if (opts.description !== undefined)
|
|
112
|
+
body['description'] = opts.description;
|
|
113
|
+
if (opts.shouldFillDaily)
|
|
114
|
+
body['should_fill_daily'] = true;
|
|
115
|
+
if (opts.userIds !== undefined)
|
|
116
|
+
body['user_ids'] = parseIds(opts.userIds);
|
|
117
|
+
if (opts.taskIds !== undefined)
|
|
118
|
+
body['task_ids'] = parseIds(opts.taskIds);
|
|
119
|
+
if (opts.responsibleIds !== undefined)
|
|
120
|
+
body['responsible_ids'] = parseIds(opts.responsibleIds);
|
|
121
|
+
const data = await withSpinner('Creating sprint...', () => apiPost('/sprint', body));
|
|
122
|
+
outputSuccess(ctx, 'Sprint created successfully', data);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
outputError(ctx, err);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
// update
|
|
129
|
+
sprint
|
|
130
|
+
.command('update <id>')
|
|
131
|
+
.description('Update a sprint')
|
|
132
|
+
.option('--description <text>', 'Sprint description')
|
|
133
|
+
.option('--start-date <date>', 'Start date (YYYY-MM-DD)')
|
|
134
|
+
.option('--deadline <date>', 'Deadline date (YYYY-MM-DD)')
|
|
135
|
+
.option('--user-ids <ids>', 'Comma-separated user IDs')
|
|
136
|
+
.option('--responsible-ids <ids>', 'Comma-separated responsible user IDs')
|
|
137
|
+
.action(async (id, opts, cmd) => {
|
|
138
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
139
|
+
try {
|
|
140
|
+
const body = {};
|
|
141
|
+
if (opts.description !== undefined)
|
|
142
|
+
body['description'] = opts.description;
|
|
143
|
+
if (opts.startDate !== undefined)
|
|
144
|
+
body['start_date'] = opts.startDate;
|
|
145
|
+
if (opts.deadline !== undefined)
|
|
146
|
+
body['deadline'] = opts.deadline;
|
|
147
|
+
if (opts.userIds !== undefined)
|
|
148
|
+
body['user_ids'] = parseIds(opts.userIds);
|
|
149
|
+
if (opts.responsibleIds !== undefined)
|
|
150
|
+
body['responsible_ids'] = parseIds(opts.responsibleIds);
|
|
151
|
+
const data = await withSpinner(`Updating sprint ${id}...`, () => apiPut(`/sprint/${id}`, body));
|
|
152
|
+
outputSuccess(ctx, `Sprint ${id} updated successfully`, data);
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
outputError(ctx, err);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
// delete
|
|
159
|
+
sprint
|
|
160
|
+
.command('delete <id>')
|
|
161
|
+
.description('Delete a sprint')
|
|
162
|
+
.action(async (id, opts, cmd) => {
|
|
163
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
164
|
+
try {
|
|
165
|
+
const data = await withSpinner(`Deleting sprint ${id}...`, () => apiDelete(`/sprint/${id}`));
|
|
166
|
+
outputSuccess(ctx, `Sprint ${id} deleted successfully`, data);
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
outputError(ctx, err);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// close
|
|
173
|
+
sprint
|
|
174
|
+
.command('close')
|
|
175
|
+
.description('Close a sprint')
|
|
176
|
+
.requiredOption('--sprint-id <id>', 'Sprint ID to close')
|
|
177
|
+
.option('--score-client <n>', 'Client score')
|
|
178
|
+
.option('--comment-client <text>', 'Client comment')
|
|
179
|
+
.option('--open-new', 'Open a new sprint after closing')
|
|
180
|
+
.option('--task-ids <ids>', 'Comma-separated task IDs to carry over')
|
|
181
|
+
.action(async (opts, cmd) => {
|
|
182
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
183
|
+
try {
|
|
184
|
+
const body = {
|
|
185
|
+
sprint_id: opts.sprintId,
|
|
186
|
+
review_users: [],
|
|
187
|
+
};
|
|
188
|
+
if (opts.scoreClient !== undefined)
|
|
189
|
+
body['score_client'] = Number(opts.scoreClient);
|
|
190
|
+
if (opts.commentClient !== undefined)
|
|
191
|
+
body['comment_client'] = opts.commentClient;
|
|
192
|
+
if (opts.openNew)
|
|
193
|
+
body['open_new'] = true;
|
|
194
|
+
if (opts.taskIds !== undefined)
|
|
195
|
+
body['task_ids'] = parseIds(opts.taskIds);
|
|
196
|
+
const data = await withSpinner(`Closing sprint ${opts.sprintId}...`, () => apiPost('/sprint/close', body));
|
|
197
|
+
outputSuccess(ctx, `Sprint ${opts.sprintId} closed successfully`, data);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
outputError(ctx, err);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
// report
|
|
204
|
+
sprint
|
|
205
|
+
.command('report <id>')
|
|
206
|
+
.description('Get a sprint report')
|
|
207
|
+
.action(async (id, opts, cmd) => {
|
|
208
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
209
|
+
try {
|
|
210
|
+
const data = await withSpinner(`Fetching report for sprint ${id}...`, () => apiGet(`/sprint/reports/${id}`));
|
|
211
|
+
outputDetail(ctx, data);
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
outputError(ctx, err);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=sprints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../../src/commands/sprints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/commands/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG1D"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { apiGet, apiPost, apiPut, apiDelete } from '../http/client.js';
|
|
2
|
+
import { getContext, outputList, outputDetail, outputSuccess, outputError } from '../output/formatter.js';
|
|
3
|
+
import { withSpinner } from '../utils/spinner.js';
|
|
4
|
+
export function registerTagCommands(program) {
|
|
5
|
+
const tag = program.command('tag').description('Tag management commands');
|
|
6
|
+
tag
|
|
7
|
+
.command('list')
|
|
8
|
+
.description('List all tags')
|
|
9
|
+
.option('--project-id <id>', 'Filter by project ID')
|
|
10
|
+
.option('--name <name>', 'Filter by tag name')
|
|
11
|
+
.action(async (opts, cmd) => {
|
|
12
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
13
|
+
try {
|
|
14
|
+
const params = {};
|
|
15
|
+
if (opts.projectId !== undefined)
|
|
16
|
+
params.project_id = Number(opts.projectId);
|
|
17
|
+
if (opts.name !== undefined)
|
|
18
|
+
params.name = opts.name;
|
|
19
|
+
const data = await withSpinner('Fetching tags...', () => apiGet('tags', params));
|
|
20
|
+
outputList(ctx, data, [
|
|
21
|
+
{ key: 'id', header: 'ID', width: 6 },
|
|
22
|
+
{ key: 'name', header: 'Name', width: 40 },
|
|
23
|
+
{ key: 'project_id', header: 'Project ID', width: 12 },
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
outputError(ctx, err);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
tag
|
|
31
|
+
.command('get <id>')
|
|
32
|
+
.description('Get a tag by ID')
|
|
33
|
+
.action(async (id, _, cmd) => {
|
|
34
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
35
|
+
try {
|
|
36
|
+
const data = await withSpinner('Fetching tag...', () => apiGet(`tags/${id}`));
|
|
37
|
+
outputDetail(ctx, data, {
|
|
38
|
+
id: 'ID',
|
|
39
|
+
name: 'Name',
|
|
40
|
+
project_id: 'Project ID',
|
|
41
|
+
created_at: 'Created At',
|
|
42
|
+
updated_at: 'Updated At',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
outputError(ctx, err);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
tag
|
|
50
|
+
.command('create')
|
|
51
|
+
.description('Create a new tag')
|
|
52
|
+
.requiredOption('--name <name>', 'Tag name')
|
|
53
|
+
.requiredOption('--project-id <id>', 'Project ID')
|
|
54
|
+
.action(async (opts, cmd) => {
|
|
55
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
56
|
+
try {
|
|
57
|
+
const body = {
|
|
58
|
+
name: opts.name,
|
|
59
|
+
project_id: Number(opts.projectId),
|
|
60
|
+
};
|
|
61
|
+
const data = await withSpinner('Creating tag...', () => apiPost('tags', body));
|
|
62
|
+
outputSuccess(ctx, `Tag "${opts.name}" created successfully`, data);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
outputError(ctx, err);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
tag
|
|
69
|
+
.command('update <id>')
|
|
70
|
+
.description('Update an existing tag')
|
|
71
|
+
.option('--name <name>', 'Tag name')
|
|
72
|
+
.action(async (id, opts, cmd) => {
|
|
73
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
74
|
+
try {
|
|
75
|
+
const body = {};
|
|
76
|
+
if (opts.name !== undefined)
|
|
77
|
+
body.name = opts.name;
|
|
78
|
+
const data = await withSpinner('Updating tag...', () => apiPut(`tags/${id}`, body));
|
|
79
|
+
outputSuccess(ctx, `Tag ${id} updated successfully`, data);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
outputError(ctx, err);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
tag
|
|
86
|
+
.command('delete <id>')
|
|
87
|
+
.description('Delete a tag')
|
|
88
|
+
.action(async (id, _, cmd) => {
|
|
89
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
90
|
+
try {
|
|
91
|
+
await withSpinner('Deleting tag...', () => apiDelete(`tags/${id}`));
|
|
92
|
+
outputSuccess(ctx, `Tag ${id} deleted successfully`);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
outputError(ctx, err);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/commands/tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwV3D"}
|