@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,207 @@
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 parseUserPairs(str) {
5
+ return str.split(',').map((pair) => {
6
+ const [userId, capacity] = pair.trim().split(':');
7
+ return { user_id: Number(userId), capacity: Number(capacity) };
8
+ });
9
+ }
10
+ export function registerPhaseCommands(program) {
11
+ const phase = program.command('phase').description('Phase management commands');
12
+ phase
13
+ .command('list')
14
+ .description('List all phases')
15
+ .option('--project-id <id>', 'Filter by project ID')
16
+ .option('--with-project', 'Include project data in response')
17
+ .option('--with-users', 'Include users data in response')
18
+ .option('--with-tasks', 'Include tasks data in response')
19
+ .action(async (opts, cmd) => {
20
+ const ctx = getContext(cmd.optsWithGlobals());
21
+ try {
22
+ const params = {};
23
+ if (opts.projectId !== undefined)
24
+ params.project_id = Number(opts.projectId);
25
+ if (opts.withProject)
26
+ params.with_project = true;
27
+ if (opts.withUsers)
28
+ params.with_users = true;
29
+ if (opts.withTasks)
30
+ params.with_tasks = true;
31
+ const data = await withSpinner('Fetching phases...', () => apiGet('phases', params));
32
+ outputList(ctx, data, [
33
+ { key: 'id', header: 'ID', width: 6 },
34
+ { key: 'name', header: 'Name', width: 30 },
35
+ { key: 'start_date', header: 'Start Date', width: 12 },
36
+ { key: 'end_date', header: 'End Date', width: 12 },
37
+ { key: 'project_id', header: 'Project ID', width: 12 },
38
+ { key: 'state', header: 'State', width: 12 },
39
+ ]);
40
+ }
41
+ catch (err) {
42
+ outputError(ctx, err);
43
+ }
44
+ });
45
+ phase
46
+ .command('get <id>')
47
+ .description('Get a phase by ID')
48
+ .action(async (id, _, cmd) => {
49
+ const ctx = getContext(cmd.optsWithGlobals());
50
+ try {
51
+ const data = await withSpinner('Fetching phase...', () => apiGet(`phases/${id}`));
52
+ outputDetail(ctx, data, {
53
+ id: 'ID',
54
+ name: 'Name',
55
+ start_date: 'Start Date',
56
+ end_date: 'End Date',
57
+ project_id: 'Project ID',
58
+ state: 'State',
59
+ invoice_number: 'Invoice Number',
60
+ amount: 'Amount',
61
+ created_at: 'Created At',
62
+ updated_at: 'Updated At',
63
+ });
64
+ }
65
+ catch (err) {
66
+ outputError(ctx, err);
67
+ }
68
+ });
69
+ phase
70
+ .command('create')
71
+ .description('Create a new phase')
72
+ .requiredOption('--name <name>', 'Phase name')
73
+ .requiredOption('--start-date <date>', 'Phase start date')
74
+ .requiredOption('--end-date <date>', 'Phase end date')
75
+ .requiredOption('--project-id <id>', 'Project ID')
76
+ .option('--invoice-number <number>', 'Invoice number')
77
+ .option('--amount <n>', 'Phase amount')
78
+ .option('--users <pairs>', 'Comma-separated user_id:capacity pairs (e.g. "1:40,2:80")')
79
+ .option('--responsible-ids <ids>', 'Comma-separated responsible user IDs (e.g. "1,2")')
80
+ .action(async (opts, cmd) => {
81
+ const ctx = getContext(cmd.optsWithGlobals());
82
+ try {
83
+ const body = {
84
+ name: opts.name,
85
+ start_date: opts.startDate,
86
+ end_date: opts.endDate,
87
+ project_id: Number(opts.projectId),
88
+ };
89
+ if (opts.invoiceNumber !== undefined)
90
+ body.invoice_number = opts.invoiceNumber;
91
+ if (opts.amount !== undefined)
92
+ body.amount = Number(opts.amount);
93
+ if (opts.users !== undefined)
94
+ body.users = parseUserPairs(opts.users);
95
+ if (opts.responsibleIds !== undefined)
96
+ body.responsibles = opts.responsibleIds.split(',').map(Number);
97
+ const data = await withSpinner('Creating phase...', () => apiPost('phases', body));
98
+ outputSuccess(ctx, `Phase "${opts.name}" created successfully`, data);
99
+ }
100
+ catch (err) {
101
+ outputError(ctx, err);
102
+ }
103
+ });
104
+ phase
105
+ .command('update <id>')
106
+ .description('Update an existing phase')
107
+ .option('--name <name>', 'Phase name')
108
+ .option('--start-date <date>', 'Phase start date')
109
+ .option('--end-date <date>', 'Phase end date')
110
+ .option('--project-id <id>', 'Project ID')
111
+ .option('--invoice-number <number>', 'Invoice number')
112
+ .option('--amount <n>', 'Phase amount')
113
+ .option('--users <pairs>', 'Comma-separated user_id:capacity pairs (e.g. "1:40,2:80") — replaces all')
114
+ .option('--responsible-ids <ids>', 'Comma-separated responsible user IDs (e.g. "1,2")')
115
+ .action(async (id, opts, cmd) => {
116
+ const ctx = getContext(cmd.optsWithGlobals());
117
+ try {
118
+ const body = {};
119
+ if (opts.name !== undefined)
120
+ body.name = opts.name;
121
+ if (opts.startDate !== undefined)
122
+ body.start_date = opts.startDate;
123
+ if (opts.endDate !== undefined)
124
+ body.end_date = opts.endDate;
125
+ if (opts.projectId !== undefined)
126
+ body.project_id = Number(opts.projectId);
127
+ if (opts.invoiceNumber !== undefined)
128
+ body.invoice_number = opts.invoiceNumber;
129
+ if (opts.amount !== undefined)
130
+ body.amount = Number(opts.amount);
131
+ if (opts.users !== undefined)
132
+ body.users = parseUserPairs(opts.users);
133
+ if (opts.responsibleIds !== undefined)
134
+ body.responsibles = opts.responsibleIds.split(',').map(Number);
135
+ const data = await withSpinner('Updating phase...', () => apiPut(`phases/${id}`, body));
136
+ outputSuccess(ctx, `Phase ${id} updated successfully`, data);
137
+ }
138
+ catch (err) {
139
+ outputError(ctx, err);
140
+ }
141
+ });
142
+ phase
143
+ .command('delete <id>')
144
+ .description('Delete a phase')
145
+ .action(async (id, _, cmd) => {
146
+ const ctx = getContext(cmd.optsWithGlobals());
147
+ try {
148
+ const data = await withSpinner('Deleting phase...', () => apiDelete(`phases/${id}`));
149
+ outputSuccess(ctx, `Phase ${id} deleted successfully`, data);
150
+ }
151
+ catch (err) {
152
+ outputError(ctx, err);
153
+ }
154
+ });
155
+ phase
156
+ .command('report <id>')
157
+ .description('Get report data for a phase')
158
+ .option('--sprint-id <id>', 'Filter by sprint ID')
159
+ .action(async (id, opts, cmd) => {
160
+ const ctx = getContext(cmd.optsWithGlobals());
161
+ try {
162
+ const params = {};
163
+ if (opts.sprintId !== undefined)
164
+ params.sprint_id = Number(opts.sprintId);
165
+ const data = await withSpinner('Fetching phase report...', () => apiGet(`phases/${id}/report`, params));
166
+ outputDetail(ctx, data, {
167
+ task_to_assign: 'Tasks to Assign',
168
+ points_to_assign: 'Points to Assign',
169
+ tasks_done: 'Tasks Done',
170
+ points_done: 'Points Done',
171
+ tasks_in_progress: 'Tasks In Progress',
172
+ points_in_progress: 'Points In Progress',
173
+ tasks_total: 'Tasks Total',
174
+ points_total: 'Points Total',
175
+ });
176
+ }
177
+ catch (err) {
178
+ outputError(ctx, err);
179
+ }
180
+ });
181
+ phase
182
+ .command('close <id>')
183
+ .description('Close a phase')
184
+ .requiredOption('--score-client <n>', 'Client score')
185
+ .requiredOption('--comment-client <text>', 'Client comment')
186
+ .option('--create-phase', 'Create a new phase after closing')
187
+ .option('--create-sprint', 'Create a new sprint after closing')
188
+ .action(async (id, opts, cmd) => {
189
+ const ctx = getContext(cmd.optsWithGlobals());
190
+ try {
191
+ const body = {
192
+ score_client: Number(opts.scoreClient),
193
+ comment_client: opts.commentClient,
194
+ };
195
+ if (opts.createPhase !== undefined)
196
+ body.create_phase = opts.createPhase;
197
+ if (opts.createSprint !== undefined)
198
+ body.create_sprint = opts.createSprint;
199
+ const data = await withSpinner('Closing phase...', () => apiPost(`phases/${id}/close`, body));
200
+ outputSuccess(ctx, `Phase ${id} closed successfully`, data);
201
+ }
202
+ catch (err) {
203
+ outputError(ctx, err);
204
+ }
205
+ });
206
+ }
207
+ //# sourceMappingURL=phases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../../src/commands/phases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerProjectCommands(program: Command): void;
3
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/commands/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmL9D"}
@@ -0,0 +1,192 @@
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 registerProjectCommands(program) {
5
+ const project = program.command('project').description('Project management commands');
6
+ project
7
+ .command('list')
8
+ .description('List all projects')
9
+ .option('--archived', 'Show archived projects')
10
+ .action(async (opts, cmd) => {
11
+ const ctx = getContext(cmd.optsWithGlobals());
12
+ try {
13
+ const params = {};
14
+ if (opts.archived)
15
+ params.archived = true;
16
+ const data = await withSpinner('Fetching projects...', () => apiGet('project', params));
17
+ outputList(ctx, data, [
18
+ { key: 'id', header: 'ID', width: 6 },
19
+ { key: 'name', header: 'Name', width: 30 },
20
+ { key: 'description', header: 'Description', width: 40 },
21
+ { key: 'archived', header: 'Archived', width: 10 },
22
+ { key: 'administrative', header: 'Administrative', width: 15 },
23
+ ]);
24
+ }
25
+ catch (err) {
26
+ outputError(ctx, err);
27
+ }
28
+ });
29
+ project
30
+ .command('get <id>')
31
+ .description('Get a project by ID')
32
+ .option('--with-sprints', 'Include sprints in response')
33
+ .option('--with-goals', 'Include goals in response')
34
+ .action(async (id, opts, cmd) => {
35
+ const ctx = getContext(cmd.optsWithGlobals());
36
+ try {
37
+ const params = {};
38
+ if (opts.withSprints)
39
+ params.with_sprints = true;
40
+ if (opts.withGoals)
41
+ params.with_goals = true;
42
+ const data = await withSpinner('Fetching project...', () => apiGet(`project/${id}`, params));
43
+ outputDetail(ctx, data, {
44
+ id: 'ID',
45
+ name: 'Name',
46
+ description: 'Description',
47
+ archived: 'Archived',
48
+ administrative: 'Administrative',
49
+ created_at: 'Created At',
50
+ updated_at: 'Updated At',
51
+ });
52
+ }
53
+ catch (err) {
54
+ outputError(ctx, err);
55
+ }
56
+ });
57
+ project
58
+ .command('create')
59
+ .description('Create a new project')
60
+ .requiredOption('--name <name>', 'Project name')
61
+ .requiredOption('--description <description>', 'Project description')
62
+ .option('--administrative', 'Mark as administrative project')
63
+ .option('--clients <ids>', 'Comma-separated client IDs')
64
+ .action(async (opts, cmd) => {
65
+ const ctx = getContext(cmd.optsWithGlobals());
66
+ try {
67
+ const body = {
68
+ name: opts.name,
69
+ description: opts.description,
70
+ };
71
+ if (opts.administrative !== undefined)
72
+ body.administrative = opts.administrative;
73
+ if (opts.clients !== undefined)
74
+ body.clients = opts.clients.split(',').map(Number);
75
+ const data = await withSpinner('Creating project...', () => apiPost('project', body));
76
+ outputSuccess(ctx, `Project "${opts.name}" created successfully`, data);
77
+ }
78
+ catch (err) {
79
+ outputError(ctx, err);
80
+ }
81
+ });
82
+ project
83
+ .command('update <id>')
84
+ .description('Update an existing project')
85
+ .option('--name <name>', 'Project name')
86
+ .option('--description <description>', 'Project description')
87
+ .option('--archived', 'Mark as archived')
88
+ .option('--administrative', 'Mark as administrative project')
89
+ .option('--clients <ids>', 'Comma-separated client IDs')
90
+ .action(async (id, opts, cmd) => {
91
+ const ctx = getContext(cmd.optsWithGlobals());
92
+ try {
93
+ const body = {};
94
+ if (opts.name !== undefined)
95
+ body.name = opts.name;
96
+ if (opts.description !== undefined)
97
+ body.description = opts.description;
98
+ if (opts.archived !== undefined)
99
+ body.archived = opts.archived;
100
+ if (opts.administrative !== undefined)
101
+ body.administrative = opts.administrative;
102
+ if (opts.clients !== undefined)
103
+ body.clients = opts.clients === '' ? [] : opts.clients.split(',').map(Number);
104
+ const data = await withSpinner('Updating project...', () => apiPut(`project/${id}`, body));
105
+ outputSuccess(ctx, `Project ${id} updated successfully`, data);
106
+ }
107
+ catch (err) {
108
+ outputError(ctx, err);
109
+ }
110
+ });
111
+ project
112
+ .command('delete <id>')
113
+ .description('Delete a project')
114
+ .action(async (id, _, cmd) => {
115
+ const ctx = getContext(cmd.optsWithGlobals());
116
+ try {
117
+ await withSpinner('Deleting project...', () => apiDelete(`project/${id}`));
118
+ outputSuccess(ctx, `Project ${id} deleted successfully`);
119
+ }
120
+ catch (err) {
121
+ outputError(ctx, err);
122
+ }
123
+ });
124
+ project
125
+ .command('backlog <id>')
126
+ .description('Get the backlog for a project')
127
+ .option('--start-date <date>', 'Filter by start date')
128
+ .option('--end-date <date>', 'Filter by end date')
129
+ .option('--tags <ids>', 'Comma-separated tag IDs')
130
+ .option('--goal <id>', 'Filter by goal ID')
131
+ .option('--users <ids>', 'Comma-separated user IDs')
132
+ .option('--sprint <ids>', 'Comma-separated sprint IDs')
133
+ .option('--phase <ids>', 'Comma-separated phase IDs')
134
+ .option('--state <states>', 'Comma-separated states')
135
+ .option('--task-name <name>', 'Filter by task name')
136
+ .option('--per-page <n>', 'Number of results per page')
137
+ .option('--with-duration', 'Include duration in response')
138
+ .action(async (id, opts, cmd) => {
139
+ const ctx = getContext(cmd.optsWithGlobals());
140
+ try {
141
+ const params = {};
142
+ if (opts.startDate !== undefined)
143
+ params.start_date = opts.startDate;
144
+ if (opts.endDate !== undefined)
145
+ params.end_date = opts.endDate;
146
+ if (opts.tags !== undefined)
147
+ params.tags = opts.tags.split(',').map(Number);
148
+ if (opts.goal !== undefined)
149
+ params.goal = Number(opts.goal);
150
+ if (opts.users !== undefined)
151
+ params.users = opts.users.split(',').map(Number);
152
+ if (opts.sprint !== undefined)
153
+ params.sprint = opts.sprint.split(',').map(Number);
154
+ if (opts.phase !== undefined)
155
+ params.phase = opts.phase.split(',').map(Number);
156
+ if (opts.state !== undefined)
157
+ params.state = opts.state.split(',');
158
+ if (opts.taskName !== undefined)
159
+ params.task_name = opts.taskName;
160
+ if (opts.perPage !== undefined)
161
+ params.per_page = Number(opts.perPage);
162
+ if (opts.withDuration)
163
+ params.with_duration = true;
164
+ const data = await withSpinner('Fetching project backlog...', () => apiGet(`project/backlog/${id}`, params));
165
+ outputList(ctx, data, [
166
+ { key: 'id', header: 'ID', width: 6 },
167
+ { key: 'title', header: 'Title', width: 40 },
168
+ { key: 'state', header: 'State', width: 15 },
169
+ { key: 'priority', header: 'Priority', width: 10 },
170
+ { key: 'story_point', header: 'Points', width: 8 },
171
+ { key: 'sprint_id', header: 'Sprint ID', width: 10 },
172
+ ]);
173
+ }
174
+ catch (err) {
175
+ outputError(ctx, err);
176
+ }
177
+ });
178
+ project
179
+ .command('archive <id>')
180
+ .description('Toggle archive status of a project')
181
+ .action(async (id, _, cmd) => {
182
+ const ctx = getContext(cmd.optsWithGlobals());
183
+ try {
184
+ const data = await withSpinner('Toggling archive status...', () => apiPut(`project-archived/${id}`));
185
+ outputSuccess(ctx, `Project ${id} archive status toggled`, data);
186
+ }
187
+ catch (err) {
188
+ outputError(ctx, err);
189
+ }
190
+ });
191
+ }
192
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/commands/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerScheduleCommands(program: Command): void;
3
+ //# sourceMappingURL=schedules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedules.d.ts","sourceRoot":"","sources":["../../../src/commands/schedules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmJ/D"}
@@ -0,0 +1,155 @@
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 registerScheduleCommands(program) {
5
+ const schedule = program.command('schedule').description('Schedule management commands');
6
+ schedule
7
+ .command('list')
8
+ .description('List schedule entries')
9
+ .requiredOption('--start <timestamp>', 'Start timestamp')
10
+ .requiredOption('--end <timestamp>', 'End timestamp')
11
+ .requiredOption('--users-id <ids>', 'Comma-separated user IDs')
12
+ .action(async (opts, cmd) => {
13
+ const ctx = getContext(cmd.optsWithGlobals());
14
+ try {
15
+ const params = {
16
+ start: opts.start,
17
+ end: opts.end,
18
+ users_id: opts.usersId.split(',').map(Number),
19
+ };
20
+ const data = await withSpinner('Fetching schedule...', () => apiGet('schedule', params));
21
+ outputList(ctx, data, [
22
+ { key: 'id', header: 'ID', width: 6 },
23
+ { key: 'title', header: 'Title', width: 30 },
24
+ { key: 'start', header: 'Start', width: 20 },
25
+ { key: 'end', header: 'End', width: 20 },
26
+ { key: 'category', header: 'Category', width: 15 },
27
+ { key: 'state', header: 'State', width: 12 },
28
+ ]);
29
+ }
30
+ catch (err) {
31
+ outputError(ctx, err);
32
+ }
33
+ });
34
+ schedule
35
+ .command('get <id>')
36
+ .description('Get a schedule entry by ID')
37
+ .action(async (id, _, cmd) => {
38
+ const ctx = getContext(cmd.optsWithGlobals());
39
+ try {
40
+ const data = await withSpinner('Fetching schedule entry...', () => apiGet(`schedule/${id}`));
41
+ outputDetail(ctx, data, {
42
+ id: 'ID',
43
+ title: 'Title',
44
+ body: 'Body',
45
+ start: 'Start',
46
+ end: 'End',
47
+ category: 'Category',
48
+ location: 'Location',
49
+ state: 'State',
50
+ type: 'Type',
51
+ user_id: 'User ID',
52
+ task_id: 'Task ID',
53
+ created_at: 'Created At',
54
+ updated_at: 'Updated At',
55
+ });
56
+ }
57
+ catch (err) {
58
+ outputError(ctx, err);
59
+ }
60
+ });
61
+ schedule
62
+ .command('create')
63
+ .description('Create a new schedule entry')
64
+ .requiredOption('--title <title>', 'Entry title')
65
+ .requiredOption('--body <body>', 'Entry body/description')
66
+ .requiredOption('--start <timestamp>', 'Start timestamp')
67
+ .requiredOption('--end <timestamp>', 'End timestamp')
68
+ .requiredOption('--category <category>', 'Entry category')
69
+ .requiredOption('--location <location>', 'Entry location')
70
+ .requiredOption('--state <state>', 'Entry state')
71
+ .requiredOption('--user-id <n>', 'User ID')
72
+ .requiredOption('--task-id <n>', 'Task ID')
73
+ .option('--type <type>', 'Entry type')
74
+ .action(async (opts, cmd) => {
75
+ const ctx = getContext(cmd.optsWithGlobals());
76
+ try {
77
+ const body = {
78
+ title: opts.title,
79
+ body: opts.body,
80
+ start: opts.start,
81
+ end: opts.end,
82
+ category: opts.category,
83
+ location: opts.location,
84
+ state: opts.state,
85
+ user_id: Number(opts.userId),
86
+ task_id: Number(opts.taskId),
87
+ };
88
+ if (opts.type !== undefined)
89
+ body.type = opts.type;
90
+ const data = await withSpinner('Creating schedule entry...', () => apiPost('schedule', body));
91
+ outputSuccess(ctx, `Schedule entry "${opts.title}" created successfully`, data);
92
+ }
93
+ catch (err) {
94
+ outputError(ctx, err);
95
+ }
96
+ });
97
+ schedule
98
+ .command('update <id>')
99
+ .description('Update an existing schedule entry')
100
+ .option('--title <title>', 'Entry title')
101
+ .option('--body <body>', 'Entry body/description')
102
+ .option('--start <timestamp>', 'Start timestamp')
103
+ .option('--end <timestamp>', 'End timestamp')
104
+ .option('--category <category>', 'Entry category')
105
+ .option('--location <location>', 'Entry location')
106
+ .option('--state <state>', 'Entry state')
107
+ .option('--user-id <n>', 'User ID')
108
+ .option('--task-id <n>', 'Task ID')
109
+ .option('--type <type>', 'Entry type')
110
+ .action(async (id, opts, cmd) => {
111
+ const ctx = getContext(cmd.optsWithGlobals());
112
+ try {
113
+ const body = {};
114
+ if (opts.title !== undefined)
115
+ body.title = opts.title;
116
+ if (opts.body !== undefined)
117
+ body.body = opts.body;
118
+ if (opts.start !== undefined)
119
+ body.start = opts.start;
120
+ if (opts.end !== undefined)
121
+ body.end = opts.end;
122
+ if (opts.category !== undefined)
123
+ body.category = opts.category;
124
+ if (opts.location !== undefined)
125
+ body.location = opts.location;
126
+ if (opts.state !== undefined)
127
+ body.state = opts.state;
128
+ if (opts.userId !== undefined)
129
+ body.user_id = Number(opts.userId);
130
+ if (opts.taskId !== undefined)
131
+ body.task_id = Number(opts.taskId);
132
+ if (opts.type !== undefined)
133
+ body.type = opts.type;
134
+ const data = await withSpinner('Updating schedule entry...', () => apiPut(`schedule/${id}`, body));
135
+ outputSuccess(ctx, `Schedule entry ${id} updated successfully`, data);
136
+ }
137
+ catch (err) {
138
+ outputError(ctx, err);
139
+ }
140
+ });
141
+ schedule
142
+ .command('delete <id>')
143
+ .description('Delete a schedule entry')
144
+ .action(async (id, _, cmd) => {
145
+ const ctx = getContext(cmd.optsWithGlobals());
146
+ try {
147
+ await withSpinner('Deleting schedule entry...', () => apiDelete(`schedule/${id}`));
148
+ outputSuccess(ctx, `Schedule entry ${id} deleted successfully`);
149
+ }
150
+ catch (err) {
151
+ outputError(ctx, err);
152
+ }
153
+ });
154
+ }
155
+ //# sourceMappingURL=schedules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedules.js","sourceRoot":"","sources":["../../../src/commands/schedules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerScoreCommands(program: Command): void;
3
+ //# sourceMappingURL=scores.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scores.d.ts","sourceRoot":"","sources":["../../../src/commands/scores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiI5D"}