@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.
Files changed (126) hide show
  1. package/README.md +263 -0
  2. package/dist/bin/teurtask-prod.d.ts +3 -0
  3. package/dist/bin/teurtask-prod.d.ts.map +1 -0
  4. package/dist/bin/teurtask-prod.js +6 -0
  5. package/dist/bin/teurtask-prod.js.map +1 -0
  6. package/dist/bin/teurtask.d.ts +3 -0
  7. package/dist/bin/teurtask.d.ts.map +1 -0
  8. package/dist/bin/teurtask.js +5 -0
  9. package/dist/bin/teurtask.js.map +1 -0
  10. package/dist/src/auth/index.d.ts +13 -0
  11. package/dist/src/auth/index.d.ts.map +1 -0
  12. package/dist/src/auth/index.js +44 -0
  13. package/dist/src/auth/index.js.map +1 -0
  14. package/dist/src/auth/login-server.d.ts +14 -0
  15. package/dist/src/auth/login-server.d.ts.map +1 -0
  16. package/dist/src/auth/login-server.js +84 -0
  17. package/dist/src/auth/login-server.js.map +1 -0
  18. package/dist/src/commands/auth.d.ts +3 -0
  19. package/dist/src/commands/auth.d.ts.map +1 -0
  20. package/dist/src/commands/auth.js +83 -0
  21. package/dist/src/commands/auth.js.map +1 -0
  22. package/dist/src/commands/comments.d.ts +3 -0
  23. package/dist/src/commands/comments.d.ts.map +1 -0
  24. package/dist/src/commands/comments.js +81 -0
  25. package/dist/src/commands/comments.js.map +1 -0
  26. package/dist/src/commands/documents.d.ts +3 -0
  27. package/dist/src/commands/documents.d.ts.map +1 -0
  28. package/dist/src/commands/documents.js +26 -0
  29. package/dist/src/commands/documents.js.map +1 -0
  30. package/dist/src/commands/env.d.ts +3 -0
  31. package/dist/src/commands/env.d.ts.map +1 -0
  32. package/dist/src/commands/env.js +71 -0
  33. package/dist/src/commands/env.js.map +1 -0
  34. package/dist/src/commands/goals.d.ts +3 -0
  35. package/dist/src/commands/goals.d.ts.map +1 -0
  36. package/dist/src/commands/goals.js +109 -0
  37. package/dist/src/commands/goals.js.map +1 -0
  38. package/dist/src/commands/notifications.d.ts +3 -0
  39. package/dist/src/commands/notifications.d.ts.map +1 -0
  40. package/dist/src/commands/notifications.js +77 -0
  41. package/dist/src/commands/notifications.js.map +1 -0
  42. package/dist/src/commands/phases.d.ts +3 -0
  43. package/dist/src/commands/phases.d.ts.map +1 -0
  44. package/dist/src/commands/phases.js +207 -0
  45. package/dist/src/commands/phases.js.map +1 -0
  46. package/dist/src/commands/projects.d.ts +3 -0
  47. package/dist/src/commands/projects.d.ts.map +1 -0
  48. package/dist/src/commands/projects.js +192 -0
  49. package/dist/src/commands/projects.js.map +1 -0
  50. package/dist/src/commands/schedules.d.ts +3 -0
  51. package/dist/src/commands/schedules.d.ts.map +1 -0
  52. package/dist/src/commands/schedules.js +155 -0
  53. package/dist/src/commands/schedules.js.map +1 -0
  54. package/dist/src/commands/scores.d.ts +3 -0
  55. package/dist/src/commands/scores.d.ts.map +1 -0
  56. package/dist/src/commands/scores.js +136 -0
  57. package/dist/src/commands/scores.js.map +1 -0
  58. package/dist/src/commands/sprints.d.ts +3 -0
  59. package/dist/src/commands/sprints.d.ts.map +1 -0
  60. package/dist/src/commands/sprints.js +218 -0
  61. package/dist/src/commands/sprints.js.map +1 -0
  62. package/dist/src/commands/tags.d.ts +3 -0
  63. package/dist/src/commands/tags.d.ts.map +1 -0
  64. package/dist/src/commands/tags.js +99 -0
  65. package/dist/src/commands/tags.js.map +1 -0
  66. package/dist/src/commands/tasks.d.ts +3 -0
  67. package/dist/src/commands/tasks.d.ts.map +1 -0
  68. package/dist/src/commands/tasks.js +355 -0
  69. package/dist/src/commands/tasks.js.map +1 -0
  70. package/dist/src/commands/users.d.ts +3 -0
  71. package/dist/src/commands/users.d.ts.map +1 -0
  72. package/dist/src/commands/users.js +172 -0
  73. package/dist/src/commands/users.js.map +1 -0
  74. package/dist/src/config/environments.d.ts +3 -0
  75. package/dist/src/config/environments.d.ts.map +1 -0
  76. package/dist/src/config/environments.js +18 -0
  77. package/dist/src/config/environments.js.map +1 -0
  78. package/dist/src/config/index.d.ts +7 -0
  79. package/dist/src/config/index.d.ts.map +1 -0
  80. package/dist/src/config/index.js +67 -0
  81. package/dist/src/config/index.js.map +1 -0
  82. package/dist/src/config/paths.d.ts +6 -0
  83. package/dist/src/config/paths.d.ts.map +1 -0
  84. package/dist/src/config/paths.js +9 -0
  85. package/dist/src/config/paths.js.map +1 -0
  86. package/dist/src/http/client.d.ts +8 -0
  87. package/dist/src/http/client.d.ts.map +1 -0
  88. package/dist/src/http/client.js +68 -0
  89. package/dist/src/http/client.js.map +1 -0
  90. package/dist/src/http/errors.d.ts +7 -0
  91. package/dist/src/http/errors.d.ts.map +1 -0
  92. package/dist/src/http/errors.js +34 -0
  93. package/dist/src/http/errors.js.map +1 -0
  94. package/dist/src/index.d.ts +3 -0
  95. package/dist/src/index.d.ts.map +1 -0
  96. package/dist/src/index.js +76 -0
  97. package/dist/src/index.js.map +1 -0
  98. package/dist/src/output/formatter.d.ts +10 -0
  99. package/dist/src/output/formatter.d.ts.map +1 -0
  100. package/dist/src/output/formatter.js +57 -0
  101. package/dist/src/output/formatter.js.map +1 -0
  102. package/dist/src/output/json.d.ts +6 -0
  103. package/dist/src/output/json.d.ts.map +1 -0
  104. package/dist/src/output/json.js +16 -0
  105. package/dist/src/output/json.js.map +1 -0
  106. package/dist/src/output/table.d.ts +9 -0
  107. package/dist/src/output/table.d.ts.map +1 -0
  108. package/dist/src/output/table.js +32 -0
  109. package/dist/src/output/table.js.map +1 -0
  110. package/dist/src/types/api.d.ts +172 -0
  111. package/dist/src/types/api.d.ts.map +1 -0
  112. package/dist/src/types/api.js +2 -0
  113. package/dist/src/types/api.js.map +1 -0
  114. package/dist/src/types/common.d.ts +18 -0
  115. package/dist/src/types/common.d.ts.map +1 -0
  116. package/dist/src/types/common.js +2 -0
  117. package/dist/src/types/common.js.map +1 -0
  118. package/dist/src/types/config.d.ts +22 -0
  119. package/dist/src/types/config.d.ts.map +1 -0
  120. package/dist/src/types/config.js +2 -0
  121. package/dist/src/types/config.js.map +1 -0
  122. package/dist/src/utils/spinner.d.ts +6 -0
  123. package/dist/src/utils/spinner.d.ts.map +1 -0
  124. package/dist/src/utils/spinner.js +35 -0
  125. package/dist/src/utils/spinner.js.map +1 -0
  126. 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerUserCommands(program: Command): void;
3
+ //# sourceMappingURL=users.d.ts.map
@@ -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,3 @@
1
+ import type { Environment } from '../types/config.js';
2
+ export declare const defaultEnvironments: Environment[];
3
+ //# sourceMappingURL=environments.d.ts.map
@@ -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"}