@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,355 @@
|
|
|
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 registerTaskCommands(program) {
|
|
5
|
+
const task = program.command('task').description('Task management commands');
|
|
6
|
+
// list
|
|
7
|
+
task
|
|
8
|
+
.command('list')
|
|
9
|
+
.description('List tasks')
|
|
10
|
+
.option('--project-id <id>', 'Filter by project ID')
|
|
11
|
+
.option('--sprint-id <id>', 'Filter by sprint ID')
|
|
12
|
+
.option('--start-date <date>', 'Filter tasks from this date (YYYY-MM-DD); requires --end-date')
|
|
13
|
+
.option('--end-date <date>', 'Filter tasks up to this date (YYYY-MM-DD); requires --start-date')
|
|
14
|
+
.option('--with-users', 'Include users')
|
|
15
|
+
.option('--with-project', 'Include project')
|
|
16
|
+
.option('--with-sprint', 'Include sprint')
|
|
17
|
+
.option('--with-tags', 'Include tags')
|
|
18
|
+
.option('--with-goal', 'Include goal')
|
|
19
|
+
.option('--active', 'Show only active tasks')
|
|
20
|
+
.option('--personal', 'Show only personal tasks')
|
|
21
|
+
.action(async (opts, cmd) => {
|
|
22
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
23
|
+
try {
|
|
24
|
+
if ((opts.startDate !== undefined) !== (opts.endDate !== undefined)) {
|
|
25
|
+
outputError(ctx, new Error('--start-date and --end-date must both be provided together'));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const params = {};
|
|
29
|
+
if (opts.projectId !== undefined)
|
|
30
|
+
params.project_id = opts.projectId;
|
|
31
|
+
if (opts.sprintId !== undefined)
|
|
32
|
+
params.where_sprint = opts.sprintId;
|
|
33
|
+
if (opts.startDate !== undefined)
|
|
34
|
+
params.start = opts.startDate;
|
|
35
|
+
if (opts.endDate !== undefined)
|
|
36
|
+
params.end = opts.endDate;
|
|
37
|
+
if (opts.withUsers)
|
|
38
|
+
params.with_users = true;
|
|
39
|
+
if (opts.withProject)
|
|
40
|
+
params.with_project = true;
|
|
41
|
+
if (opts.withSprint)
|
|
42
|
+
params.with_sprint = true;
|
|
43
|
+
if (opts.withTags)
|
|
44
|
+
params.with_tags = true;
|
|
45
|
+
if (opts.withGoal)
|
|
46
|
+
params.with_goal = true;
|
|
47
|
+
if (opts.active)
|
|
48
|
+
params.active_tasks = true;
|
|
49
|
+
if (opts.personal)
|
|
50
|
+
params.personalTask = true;
|
|
51
|
+
const data = await withSpinner('Fetching tasks...', () => apiGet('task', params));
|
|
52
|
+
outputList(ctx, data, [
|
|
53
|
+
{ key: 'id', header: 'ID', width: 10 },
|
|
54
|
+
{ key: 'title', header: 'Title', width: 40 },
|
|
55
|
+
{ key: 'state', header: 'State', width: 12 },
|
|
56
|
+
{ key: 'priority', header: 'Priority', width: 10 },
|
|
57
|
+
{ key: 'story_point', header: 'Points', width: 8 },
|
|
58
|
+
{ key: 'sprint_id', header: 'Sprint', width: 10 },
|
|
59
|
+
{ key: 'project_id', header: 'Project', width: 10 },
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
outputError(ctx, err);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// get
|
|
67
|
+
task
|
|
68
|
+
.command('get <id>')
|
|
69
|
+
.description('Get a task by ID')
|
|
70
|
+
.option('--with-users', 'Include users')
|
|
71
|
+
.option('--with-comments', 'Include comments')
|
|
72
|
+
.option('--with-reviewer', 'Include reviewer')
|
|
73
|
+
.option('--with-duration', 'Include duration')
|
|
74
|
+
.action(async (id, opts, cmd) => {
|
|
75
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
76
|
+
try {
|
|
77
|
+
const params = {};
|
|
78
|
+
if (opts.withUsers)
|
|
79
|
+
params.with_users = true;
|
|
80
|
+
if (opts.withComments)
|
|
81
|
+
params.with_comments = true;
|
|
82
|
+
if (opts.withReviewer)
|
|
83
|
+
params.with_reviewer = true;
|
|
84
|
+
if (opts.withDuration)
|
|
85
|
+
params.with_duration = true;
|
|
86
|
+
const data = await withSpinner('Fetching task...', () => apiGet(`task/${id}`, params));
|
|
87
|
+
outputDetail(ctx, data, {
|
|
88
|
+
id: 'ID',
|
|
89
|
+
title: 'Title',
|
|
90
|
+
state: 'State',
|
|
91
|
+
priority: 'Priority',
|
|
92
|
+
difficulty: 'Difficulty',
|
|
93
|
+
story_point: 'Story Points',
|
|
94
|
+
description: 'Description',
|
|
95
|
+
deadline: 'Deadline',
|
|
96
|
+
start_date: 'Start Date',
|
|
97
|
+
finish_date: 'Finish Date',
|
|
98
|
+
sprint_id: 'Sprint ID',
|
|
99
|
+
project_id: 'Project ID',
|
|
100
|
+
phase_id: 'Phase ID',
|
|
101
|
+
reviewer_id: 'Reviewer ID',
|
|
102
|
+
goal_id: 'Goal ID',
|
|
103
|
+
is_recurrent: 'Recurrent',
|
|
104
|
+
created_at: 'Created At',
|
|
105
|
+
updated_at: 'Updated At',
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
outputError(ctx, err);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
// create
|
|
113
|
+
task
|
|
114
|
+
.command('create')
|
|
115
|
+
.description('Create a new task')
|
|
116
|
+
.requiredOption('--title <title>', 'Task title')
|
|
117
|
+
.requiredOption('--state <state>', 'Task state')
|
|
118
|
+
.option('--sprint-id <id>', 'Sprint ID')
|
|
119
|
+
.option('--phase-id <id>', 'Phase ID')
|
|
120
|
+
.option('--project-id <id>', 'Project ID')
|
|
121
|
+
.option('--users <ids>', 'Comma-separated user IDs')
|
|
122
|
+
.option('--deadline <date>', 'Deadline date')
|
|
123
|
+
.option('--description <text>', 'Task description')
|
|
124
|
+
.option('--start-date <date>', 'Start date')
|
|
125
|
+
.option('--priority <priority>', 'Task priority')
|
|
126
|
+
.option('--story-point <n>', 'Story points', parseInt)
|
|
127
|
+
.option('--reviewer-id <id>', 'Reviewer user ID')
|
|
128
|
+
.option('--goal-id <id>', 'Goal ID')
|
|
129
|
+
.option('--is-recurrent <bool>', 'Whether the task is recurrent (true/false)')
|
|
130
|
+
.option('--type-tasks <ids>', 'Comma-separated type task IDs')
|
|
131
|
+
.option('--tags <ids>', 'Comma-separated tag IDs')
|
|
132
|
+
.action(async (opts, cmd) => {
|
|
133
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
134
|
+
try {
|
|
135
|
+
const body = {
|
|
136
|
+
title: opts.title,
|
|
137
|
+
state: opts.state,
|
|
138
|
+
};
|
|
139
|
+
if (opts.sprintId !== undefined)
|
|
140
|
+
body.sprint_id = opts.sprintId;
|
|
141
|
+
if (opts.phaseId !== undefined)
|
|
142
|
+
body.phase_id = opts.phaseId;
|
|
143
|
+
if (opts.projectId !== undefined)
|
|
144
|
+
body.project_id = opts.projectId;
|
|
145
|
+
if (opts.users !== undefined)
|
|
146
|
+
body.users = opts.users;
|
|
147
|
+
if (opts.deadline !== undefined)
|
|
148
|
+
body.deadline = opts.deadline;
|
|
149
|
+
if (opts.description !== undefined)
|
|
150
|
+
body.description = opts.description;
|
|
151
|
+
if (opts.startDate !== undefined)
|
|
152
|
+
body.start_date = opts.startDate;
|
|
153
|
+
if (opts.priority !== undefined)
|
|
154
|
+
body.priority = opts.priority;
|
|
155
|
+
if (opts.storyPoint !== undefined)
|
|
156
|
+
body.story_point = opts.storyPoint;
|
|
157
|
+
if (opts.reviewerId !== undefined)
|
|
158
|
+
body.reviewer_id = opts.reviewerId;
|
|
159
|
+
if (opts.goalId !== undefined)
|
|
160
|
+
body.goal_id = opts.goalId;
|
|
161
|
+
if (opts.isRecurrent !== undefined)
|
|
162
|
+
body.is_recurrent = opts.isRecurrent === 'true';
|
|
163
|
+
if (opts.typeTasks !== undefined)
|
|
164
|
+
body.type_tasks = opts.typeTasks.split(',').map(Number);
|
|
165
|
+
if (opts.tags !== undefined)
|
|
166
|
+
body.tags = opts.tags.split(',').map(Number);
|
|
167
|
+
const data = await withSpinner('Creating task...', () => apiPost('task', body));
|
|
168
|
+
outputSuccess(ctx, 'Task created successfully', data);
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
outputError(ctx, err);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
// update
|
|
175
|
+
task
|
|
176
|
+
.command('update <id>')
|
|
177
|
+
.description('Update a task')
|
|
178
|
+
.option('--title <title>', 'Task title')
|
|
179
|
+
.option('--state <state>', 'Task state')
|
|
180
|
+
.option('--description <text>', 'Task description')
|
|
181
|
+
.option('--priority <priority>', 'Task priority')
|
|
182
|
+
.option('--difficulty <difficulty>', 'Task difficulty')
|
|
183
|
+
.option('--story-point <n>', 'Story points', parseInt)
|
|
184
|
+
.option('--deadline <date>', 'Deadline date')
|
|
185
|
+
.option('--start-date <date>', 'Start date')
|
|
186
|
+
.option('--finish-date <date>', 'Finish date')
|
|
187
|
+
.option('--sprint-id <id>', 'Sprint ID')
|
|
188
|
+
.option('--users <ids>', 'Comma-separated user IDs')
|
|
189
|
+
.option('--type-tasks <ids>', 'Comma-separated type task IDs')
|
|
190
|
+
.option('--tags <ids>', 'Comma-separated tag IDs')
|
|
191
|
+
.option('--reviewer-id <id>', 'Reviewer user ID')
|
|
192
|
+
.action(async (id, opts, cmd) => {
|
|
193
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
194
|
+
try {
|
|
195
|
+
// The API requires state in every PUT; fetch current state if not provided.
|
|
196
|
+
let currentState = opts.state;
|
|
197
|
+
if (currentState === undefined) {
|
|
198
|
+
const current = await withSpinner('Fetching task...', () => apiGet(`task/${id}`));
|
|
199
|
+
// GET /task/{id} returns { task: { state, ... } }
|
|
200
|
+
currentState = current.task?.state ?? current.state;
|
|
201
|
+
}
|
|
202
|
+
const body = { state: currentState };
|
|
203
|
+
if (opts.title !== undefined)
|
|
204
|
+
body.title = opts.title;
|
|
205
|
+
if (opts.description !== undefined)
|
|
206
|
+
body.description = opts.description;
|
|
207
|
+
if (opts.priority !== undefined)
|
|
208
|
+
body.priority = opts.priority;
|
|
209
|
+
if (opts.difficulty !== undefined)
|
|
210
|
+
body.difficulty = opts.difficulty;
|
|
211
|
+
if (opts.storyPoint !== undefined)
|
|
212
|
+
body.story_point = opts.storyPoint;
|
|
213
|
+
if (opts.deadline !== undefined)
|
|
214
|
+
body.deadline = opts.deadline;
|
|
215
|
+
if (opts.startDate !== undefined)
|
|
216
|
+
body.start_date = opts.startDate;
|
|
217
|
+
if (opts.finishDate !== undefined)
|
|
218
|
+
body.finish_date = opts.finishDate;
|
|
219
|
+
if (opts.sprintId !== undefined)
|
|
220
|
+
body.sprint_id = opts.sprintId;
|
|
221
|
+
if (opts.users !== undefined)
|
|
222
|
+
body.users = opts.users.split(',');
|
|
223
|
+
if (opts.typeTasks !== undefined)
|
|
224
|
+
body.type_tasks = opts.typeTasks.split(',').map(Number);
|
|
225
|
+
if (opts.tags !== undefined)
|
|
226
|
+
body.tags = opts.tags.split(',').map(Number);
|
|
227
|
+
if (opts.reviewerId !== undefined)
|
|
228
|
+
body.reviewer_id = opts.reviewerId;
|
|
229
|
+
const data = await withSpinner('Updating task...', () => apiPut(`task/${id}`, body));
|
|
230
|
+
outputSuccess(ctx, 'Task updated successfully', data);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
outputError(ctx, err);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
// delete
|
|
237
|
+
task
|
|
238
|
+
.command('delete <id>')
|
|
239
|
+
.description('Delete a task')
|
|
240
|
+
.action(async (id, opts, cmd) => {
|
|
241
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
242
|
+
try {
|
|
243
|
+
const data = await withSpinner('Deleting task...', () => apiDelete(`task/${id}`));
|
|
244
|
+
outputSuccess(ctx, 'Task deleted successfully', data);
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
outputError(ctx, err);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
// track
|
|
251
|
+
task
|
|
252
|
+
.command('track <id>')
|
|
253
|
+
.description('Start or stop time tracking for a task')
|
|
254
|
+
.action(async (id, opts, cmd) => {
|
|
255
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
256
|
+
try {
|
|
257
|
+
const data = await withSpinner('Toggling task tracking...', () => apiPost('task/start_stop', { task_id: id }));
|
|
258
|
+
outputSuccess(ctx, 'Task tracking toggled successfully', data);
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
outputError(ctx, err);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
// state
|
|
265
|
+
task
|
|
266
|
+
.command('state <id> <state>')
|
|
267
|
+
.description('Update task state (To_Do, Doing, Bloqued, Finished, QA, Aceppted)')
|
|
268
|
+
.action(async (id, state, opts, cmd) => {
|
|
269
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
270
|
+
try {
|
|
271
|
+
const data = await withSpinner('Updating task state...', () => apiPut(`task-state/${id}`, { state }));
|
|
272
|
+
outputSuccess(ctx, `Task state updated to "${state}"`, data);
|
|
273
|
+
}
|
|
274
|
+
catch (err) {
|
|
275
|
+
outputError(ctx, err);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
// active
|
|
279
|
+
task
|
|
280
|
+
.command('active')
|
|
281
|
+
.description('Show active tasks')
|
|
282
|
+
.action(async (opts, cmd) => {
|
|
283
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
284
|
+
try {
|
|
285
|
+
const data = await withSpinner('Fetching active tasks...', () => apiGet('task/active_tasks'));
|
|
286
|
+
outputList(ctx, data, [
|
|
287
|
+
{ key: 'id', header: 'ID', width: 10 },
|
|
288
|
+
{ key: 'title', header: 'Title', width: 40 },
|
|
289
|
+
{ key: 'state', header: 'State', width: 12 },
|
|
290
|
+
{ key: 'priority', header: 'Priority', width: 10 },
|
|
291
|
+
{ key: 'sprint_id', header: 'Sprint', width: 10 },
|
|
292
|
+
]);
|
|
293
|
+
}
|
|
294
|
+
catch (err) {
|
|
295
|
+
outputError(ctx, err);
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
// move
|
|
299
|
+
task
|
|
300
|
+
.command('move <id>')
|
|
301
|
+
.description('Move a task to a sprint or backlog')
|
|
302
|
+
.option('--to-sprint <sprint-id>', 'Move task to this sprint ID')
|
|
303
|
+
.option('--to-backlog', 'Move task to backlog (clears sprint assignment)')
|
|
304
|
+
.action(async (id, opts, cmd) => {
|
|
305
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
306
|
+
try {
|
|
307
|
+
if (opts.toSprint === undefined && !opts.toBacklog) {
|
|
308
|
+
outputError(ctx, new Error('Either --to-sprint <id> or --to-backlog is required'));
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
if (opts.toSprint !== undefined && opts.toBacklog) {
|
|
312
|
+
outputError(ctx, new Error('--to-sprint and --to-backlog are mutually exclusive'));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const current = await withSpinner('Fetching task...', () => apiGet(`task/${id}`));
|
|
316
|
+
// GET /task/{id} returns { task: { state, ... } }
|
|
317
|
+
const currentState = current.task?.state ?? current.state;
|
|
318
|
+
const body = {
|
|
319
|
+
sprint_id: opts.toBacklog ? null : Number(opts.toSprint),
|
|
320
|
+
state: currentState,
|
|
321
|
+
};
|
|
322
|
+
const data = await withSpinner('Moving task...', () => apiPut(`task/${id}`, body));
|
|
323
|
+
const destination = opts.toBacklog ? 'backlog' : `sprint ${opts.toSprint}`;
|
|
324
|
+
outputSuccess(ctx, `Task ${id} moved to ${destination}`, data);
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
outputError(ctx, err);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
// destinations
|
|
331
|
+
task
|
|
332
|
+
.command('destinations')
|
|
333
|
+
.description('List available sprints to move tasks into')
|
|
334
|
+
.option('--project-id <id>', 'Filter by project ID')
|
|
335
|
+
.action(async (opts, cmd) => {
|
|
336
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
337
|
+
try {
|
|
338
|
+
const params = {};
|
|
339
|
+
if (opts.projectId !== undefined)
|
|
340
|
+
params.project_id = opts.projectId;
|
|
341
|
+
const resp = await withSpinner('Fetching destinations...', () => apiGet('task/sprints_actives_to_move', params));
|
|
342
|
+
const data = resp.sprints ?? [];
|
|
343
|
+
outputList(ctx, data, [
|
|
344
|
+
{ key: 'id', header: 'Sprint ID', width: 10 },
|
|
345
|
+
{ key: 'name', header: 'Sprint Name', width: 30 },
|
|
346
|
+
{ key: 'phase', header: 'Phase', width: 20 },
|
|
347
|
+
{ key: 'project', header: 'Project', width: 20 },
|
|
348
|
+
]);
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
outputError(ctx, err);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/commands/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0J3D"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { apiGet, apiPost, apiPut } 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 registerUserCommands(program) {
|
|
5
|
+
const user = program.command('user').description('User management commands');
|
|
6
|
+
user
|
|
7
|
+
.command('list')
|
|
8
|
+
.description('List all users')
|
|
9
|
+
.option('--sprint-id <id>', 'Filter by sprint ID')
|
|
10
|
+
.action(async (opts, cmd) => {
|
|
11
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
12
|
+
try {
|
|
13
|
+
const params = {};
|
|
14
|
+
if (opts.sprintId !== undefined)
|
|
15
|
+
params.where_sprint = opts.sprintId;
|
|
16
|
+
const data = await withSpinner('Fetching users...', () => apiGet('user', params));
|
|
17
|
+
outputList(ctx, data, [
|
|
18
|
+
{ key: 'id', header: 'ID', width: 10 },
|
|
19
|
+
{ key: 'name', header: 'Name', width: 20 },
|
|
20
|
+
{ key: 'last_name', header: 'Last Name', width: 20 },
|
|
21
|
+
{ key: 'email', header: 'Email', width: 30 },
|
|
22
|
+
{ key: 'charge', header: 'Position', width: 20 },
|
|
23
|
+
{ key: 'role_id', header: 'Role ID', width: 10 },
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
outputError(ctx, err);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
user
|
|
31
|
+
.command('get <id>')
|
|
32
|
+
.description('Get a user by ID')
|
|
33
|
+
.action(async (id, opts, cmd) => {
|
|
34
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
35
|
+
try {
|
|
36
|
+
const data = await withSpinner('Fetching user...', () => apiGet(`user/${id}`));
|
|
37
|
+
outputDetail(ctx, data);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
outputError(ctx, err);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
user
|
|
44
|
+
.command('create')
|
|
45
|
+
.description('Create a new user')
|
|
46
|
+
.requiredOption('--name <name>', 'First name')
|
|
47
|
+
.requiredOption('--last-name <lastName>', 'Last name')
|
|
48
|
+
.requiredOption('--email <email>', 'Email address')
|
|
49
|
+
.requiredOption('--id-card <idCard>', 'ID card number')
|
|
50
|
+
.requiredOption('--address <address>', 'Address')
|
|
51
|
+
.requiredOption('--charge <charge>', 'Position / charge')
|
|
52
|
+
.requiredOption('--phone <phone>', 'Phone number')
|
|
53
|
+
.requiredOption('--role-id <n>', 'Role ID', parseInt)
|
|
54
|
+
.requiredOption('--date-of-birth <date>', 'Date of birth')
|
|
55
|
+
.requiredOption('--hour-price <n>', 'Hour price', parseFloat)
|
|
56
|
+
.option('--url-avatar <url>', 'Avatar URL')
|
|
57
|
+
.option('--authorized', 'Mark user as authorized')
|
|
58
|
+
.option('--manual-limit <n>', 'Manual hour limit', parseFloat)
|
|
59
|
+
.action(async (opts, cmd) => {
|
|
60
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
61
|
+
try {
|
|
62
|
+
const body = {
|
|
63
|
+
name: opts.name,
|
|
64
|
+
last_name: opts.lastName,
|
|
65
|
+
email: opts.email,
|
|
66
|
+
id_card: opts.idCard,
|
|
67
|
+
address: opts.address,
|
|
68
|
+
charge: opts.charge,
|
|
69
|
+
phone: opts.phone,
|
|
70
|
+
role_id: opts.roleId,
|
|
71
|
+
date_of_birth: opts.dateOfBirth,
|
|
72
|
+
hour_price: opts.hourPrice,
|
|
73
|
+
};
|
|
74
|
+
if (opts.urlAvatar !== undefined)
|
|
75
|
+
body.url_avatar = opts.urlAvatar;
|
|
76
|
+
if (opts.authorized !== undefined)
|
|
77
|
+
body.authorized = opts.authorized;
|
|
78
|
+
if (opts.manualLimit !== undefined)
|
|
79
|
+
body.manual_limit = opts.manualLimit;
|
|
80
|
+
const data = await withSpinner('Creating user...', () => apiPost('user', body));
|
|
81
|
+
outputSuccess(ctx, 'User created successfully', data);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
outputError(ctx, err);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
user
|
|
88
|
+
.command('update <id>')
|
|
89
|
+
.description('Update a user by ID')
|
|
90
|
+
.option('--name <name>', 'First name')
|
|
91
|
+
.option('--last-name <lastName>', 'Last name')
|
|
92
|
+
.option('--email <email>', 'Email address')
|
|
93
|
+
.option('--id-card <idCard>', 'ID card number')
|
|
94
|
+
.option('--address <address>', 'Address')
|
|
95
|
+
.option('--charge <charge>', 'Position / charge')
|
|
96
|
+
.option('--phone <phone>', 'Phone number')
|
|
97
|
+
.option('--role-id <n>', 'Role ID', parseInt)
|
|
98
|
+
.option('--date-of-birth <date>', 'Date of birth')
|
|
99
|
+
.option('--hour-price <n>', 'Hour price', parseFloat)
|
|
100
|
+
.option('--url-avatar <url>', 'Avatar URL')
|
|
101
|
+
.option('--authorized', 'Mark user as authorized')
|
|
102
|
+
.option('--manual-limit <n>', 'Manual hour limit', parseFloat)
|
|
103
|
+
.action(async (id, opts, cmd) => {
|
|
104
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
105
|
+
try {
|
|
106
|
+
const body = {};
|
|
107
|
+
if (opts.name !== undefined)
|
|
108
|
+
body.name = opts.name;
|
|
109
|
+
if (opts.lastName !== undefined)
|
|
110
|
+
body.last_name = opts.lastName;
|
|
111
|
+
if (opts.email !== undefined)
|
|
112
|
+
body.email = opts.email;
|
|
113
|
+
if (opts.idCard !== undefined)
|
|
114
|
+
body.id_card = opts.idCard;
|
|
115
|
+
if (opts.address !== undefined)
|
|
116
|
+
body.address = opts.address;
|
|
117
|
+
if (opts.charge !== undefined)
|
|
118
|
+
body.charge = opts.charge;
|
|
119
|
+
if (opts.phone !== undefined)
|
|
120
|
+
body.phone = opts.phone;
|
|
121
|
+
if (opts.roleId !== undefined)
|
|
122
|
+
body.role_id = opts.roleId;
|
|
123
|
+
if (opts.dateOfBirth !== undefined)
|
|
124
|
+
body.date_of_birth = opts.dateOfBirth;
|
|
125
|
+
if (opts.hourPrice !== undefined)
|
|
126
|
+
body.hour_price = opts.hourPrice;
|
|
127
|
+
if (opts.urlAvatar !== undefined)
|
|
128
|
+
body.url_avatar = opts.urlAvatar;
|
|
129
|
+
if (opts.authorized !== undefined)
|
|
130
|
+
body.authorized = opts.authorized;
|
|
131
|
+
if (opts.manualLimit !== undefined)
|
|
132
|
+
body.manual_limit = opts.manualLimit;
|
|
133
|
+
const data = await withSpinner('Updating user...', () => apiPut(`user/${id}`, body));
|
|
134
|
+
outputSuccess(ctx, 'User updated successfully', data);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
outputError(ctx, err);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
user
|
|
141
|
+
.command('personal-tasks')
|
|
142
|
+
.description('List personal tasks for the current user')
|
|
143
|
+
.action(async (opts, cmd) => {
|
|
144
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
145
|
+
try {
|
|
146
|
+
const data = await withSpinner('Fetching personal tasks...', () => apiGet('user/personal-tasks'));
|
|
147
|
+
outputList(ctx, data, [
|
|
148
|
+
{ key: 'id', header: 'ID', width: 10 },
|
|
149
|
+
{ key: 'title', header: 'Title', width: 40 },
|
|
150
|
+
{ key: 'state', header: 'State', width: 15 },
|
|
151
|
+
{ key: 'priority', header: 'Priority', width: 12 },
|
|
152
|
+
]);
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
outputError(ctx, err);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
user
|
|
159
|
+
.command('payments')
|
|
160
|
+
.description('Show payment data for the current user')
|
|
161
|
+
.action(async (opts, cmd) => {
|
|
162
|
+
const ctx = getContext(cmd.optsWithGlobals());
|
|
163
|
+
try {
|
|
164
|
+
const data = await withSpinner('Fetching payments...', () => apiGet('my-payments'));
|
|
165
|
+
outputDetail(ctx, data);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
outputError(ctx, err);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/commands/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../../src/config/environments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAgB5C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const defaultEnvironments = [
|
|
2
|
+
{
|
|
3
|
+
name: 'local',
|
|
4
|
+
apiBaseUrl: 'http://localhost:8000/api',
|
|
5
|
+
webBaseUrl: 'http://localhost:5173',
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
name: 'dev',
|
|
9
|
+
apiBaseUrl: 'https://dev-api.teurtask.com/api',
|
|
10
|
+
webBaseUrl: 'https://dev.teurtask.com',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'prod',
|
|
14
|
+
apiBaseUrl: 'https://api.teurtask.com/api',
|
|
15
|
+
webBaseUrl: 'https://app.teurtask.com',
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
//# sourceMappingURL=environments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../../src/config/environments.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD;QACE,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,2BAA2B;QACvC,UAAU,EAAE,uBAAuB;KACpC;IACD;QACE,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,kCAAkC;QAC9C,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,8BAA8B;QAC1C,UAAU,EAAE,0BAA0B;KACvC;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Config, Environment } from '../types/config.js';
|
|
2
|
+
export declare function loadConfig(): Config;
|
|
3
|
+
export declare function saveConfig(config: Config): void;
|
|
4
|
+
export declare function getActiveEnv(): Environment;
|
|
5
|
+
export declare function setActiveEnv(name: string): Environment;
|
|
6
|
+
export declare function addEnvironment(env: Environment): void;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAe9D,wBAAgB,UAAU,IAAI,MAAM,CASnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;AAED,wBAAgB,YAAY,IAAI,WAAW,CAgB1C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAUtD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CASrD"}
|