agkan 2.12.0 → 2.13.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/dist/board/boardConfig.d.ts +3 -0
- package/dist/board/boardConfig.d.ts.map +1 -1
- package/dist/board/boardConfig.js +7 -1
- package/dist/board/boardConfig.js.map +1 -1
- package/dist/board/boardRenderer.d.ts +1 -1
- package/dist/board/boardRenderer.d.ts.map +1 -1
- package/dist/board/boardRenderer.js +12 -8
- package/dist/board/boardRenderer.js.map +1 -1
- package/dist/board/boardRoutes.d.ts.map +1 -1
- package/dist/board/boardRoutes.js +13 -1
- package/dist/board/boardRoutes.js.map +1 -1
- package/dist/board/boardStyles.d.ts +1 -1
- package/dist/board/boardStyles.d.ts.map +1 -1
- package/dist/board/boardStyles.js +119 -78
- package/dist/board/boardStyles.js.map +1 -1
- package/dist/board/client/board.js +518 -317
- package/dist/cli/commands/block/add.d.ts.map +1 -1
- package/dist/cli/commands/block/add.js +156 -110
- package/dist/cli/commands/block/add.js.map +1 -1
- package/dist/cli/commands/block/list.d.ts.map +1 -1
- package/dist/cli/commands/block/list.js +2 -3
- package/dist/cli/commands/block/list.js.map +1 -1
- package/dist/cli/commands/block/remove.d.ts.map +1 -1
- package/dist/cli/commands/block/remove.js +2 -3
- package/dist/cli/commands/block/remove.js.map +1 -1
- package/dist/cli/commands/comment/add.d.ts.map +1 -1
- package/dist/cli/commands/comment/add.js +2 -3
- package/dist/cli/commands/comment/add.js.map +1 -1
- package/dist/cli/commands/comment/delete.js +2 -2
- package/dist/cli/commands/comment/delete.js.map +1 -1
- package/dist/cli/commands/comment/list.d.ts.map +1 -1
- package/dist/cli/commands/comment/list.js +2 -3
- package/dist/cli/commands/comment/list.js.map +1 -1
- package/dist/cli/commands/meta/delete.d.ts.map +1 -1
- package/dist/cli/commands/meta/delete.js +2 -3
- package/dist/cli/commands/meta/delete.js.map +1 -1
- package/dist/cli/commands/meta/get.d.ts.map +1 -1
- package/dist/cli/commands/meta/get.js +2 -3
- package/dist/cli/commands/meta/get.js.map +1 -1
- package/dist/cli/commands/meta/list.d.ts.map +1 -1
- package/dist/cli/commands/meta/list.js +2 -3
- package/dist/cli/commands/meta/list.js.map +1 -1
- package/dist/cli/commands/meta/set.d.ts.map +1 -1
- package/dist/cli/commands/meta/set.js +2 -3
- package/dist/cli/commands/meta/set.js.map +1 -1
- package/dist/cli/commands/tag/add.js +2 -2
- package/dist/cli/commands/tag/add.js.map +1 -1
- package/dist/cli/commands/tag/attach.d.ts.map +1 -1
- package/dist/cli/commands/tag/attach.js +2 -4
- package/dist/cli/commands/tag/attach.js.map +1 -1
- package/dist/cli/commands/tag/delete.js +2 -2
- package/dist/cli/commands/tag/delete.js.map +1 -1
- package/dist/cli/commands/tag/detach.d.ts.map +1 -1
- package/dist/cli/commands/tag/detach.js +2 -4
- package/dist/cli/commands/tag/detach.js.map +1 -1
- package/dist/cli/commands/tag/list.d.ts.map +1 -1
- package/dist/cli/commands/tag/list.js +2 -3
- package/dist/cli/commands/tag/list.js.map +1 -1
- package/dist/cli/commands/tag/rename.js +2 -2
- package/dist/cli/commands/tag/rename.js.map +1 -1
- package/dist/cli/commands/tag/show.d.ts.map +1 -1
- package/dist/cli/commands/tag/show.js +2 -3
- package/dist/cli/commands/tag/show.js.map +1 -1
- package/dist/cli/commands/task/add.d.ts.map +1 -1
- package/dist/cli/commands/task/add.js +3 -3
- package/dist/cli/commands/task/add.js.map +1 -1
- package/dist/cli/commands/task/count.js +2 -2
- package/dist/cli/commands/task/count.js.map +1 -1
- package/dist/cli/commands/task/delete.js +2 -2
- package/dist/cli/commands/task/delete.js.map +1 -1
- package/dist/cli/commands/task/find.d.ts.map +1 -1
- package/dist/cli/commands/task/find.js +2 -3
- package/dist/cli/commands/task/find.js.map +1 -1
- package/dist/cli/commands/task/get.d.ts.map +1 -1
- package/dist/cli/commands/task/get.js +204 -209
- package/dist/cli/commands/task/get.js.map +1 -1
- package/dist/cli/commands/task/list.d.ts.map +1 -1
- package/dist/cli/commands/task/list.js +324 -161
- package/dist/cli/commands/task/list.js.map +1 -1
- package/dist/cli/commands/task/purge.js +2 -2
- package/dist/cli/commands/task/purge.js.map +1 -1
- package/dist/cli/commands/task/update-helpers.d.ts +42 -0
- package/dist/cli/commands/task/update-helpers.d.ts.map +1 -0
- package/dist/cli/commands/task/update-helpers.js +154 -0
- package/dist/cli/commands/task/update-helpers.js.map +1 -0
- package/dist/cli/commands/task/update-parent.js +2 -2
- package/dist/cli/commands/task/update-parent.js.map +1 -1
- package/dist/cli/commands/task/update.d.ts.map +1 -1
- package/dist/cli/commands/task/update.js +81 -196
- package/dist/cli/commands/task/update.js.map +1 -1
- package/dist/cli/utils/error-handler.js +3 -3
- package/dist/cli/utils/error-handler.js.map +1 -1
- package/dist/cli/utils/output-formatter.d.ts +14 -0
- package/dist/cli/utils/output-formatter.d.ts.map +1 -1
- package/dist/cli/utils/output-formatter.js +36 -0
- package/dist/cli/utils/output-formatter.js.map +1 -1
- package/dist/cli/utils/service-container.d.ts +25 -0
- package/dist/cli/utils/service-container.d.ts.map +1 -0
- package/dist/cli/utils/service-container.js +26 -0
- package/dist/cli/utils/service-container.js.map +1 -0
- package/dist/services/TaskService.d.ts +14 -0
- package/dist/services/TaskService.d.ts.map +1 -1
- package/dist/services/TaskService.js +48 -29
- package/dist/services/TaskService.js.map +1 -1
- package/dist/utils/input-validators.d.ts.map +1 -1
- package/dist/utils/input-validators.js +64 -69
- package/dist/utils/input-validators.js.map +1 -1
- package/package.json +4 -3
|
@@ -8,7 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.setupTaskPurgeCommand = setupTaskPurgeCommand;
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const
|
|
11
|
+
const service_container_1 = require("../../utils/service-container");
|
|
12
12
|
const error_handler_1 = require("../../utils/error-handler");
|
|
13
13
|
const validators_1 = require("../../utils/validators");
|
|
14
14
|
const output_formatter_1 = require("../../utils/output-formatter");
|
|
@@ -93,7 +93,7 @@ function setupTaskPurgeCommand(program) {
|
|
|
93
93
|
.action(async (options) => {
|
|
94
94
|
const formatter = (0, output_formatter_1.createFormatter)(options);
|
|
95
95
|
try {
|
|
96
|
-
const taskService =
|
|
96
|
+
const { taskService } = (0, service_container_1.getServiceContainer)();
|
|
97
97
|
const beforeResult = resolveBeforeDate(options.before);
|
|
98
98
|
if ('error' in beforeResult) {
|
|
99
99
|
formatter.error(beforeResult.error, () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/purge.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAuFH,sDAiEC;AArJD,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/purge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions for the task update command
|
|
3
|
+
*/
|
|
4
|
+
import { OutputFormatter } from '../../utils/output-formatter';
|
|
5
|
+
export interface UpdateOptions {
|
|
6
|
+
title?: string;
|
|
7
|
+
status?: string;
|
|
8
|
+
body?: string;
|
|
9
|
+
author?: string;
|
|
10
|
+
assignees?: string;
|
|
11
|
+
priority?: string;
|
|
12
|
+
file?: string;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if the user is using flag-based mode (as opposed to positional syntax).
|
|
17
|
+
*/
|
|
18
|
+
export declare function isFlagMode(options: UpdateOptions, field: string | undefined): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Validates a status value and exits on failure.
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateStatus(val: string, formatter: OutputFormatter): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Validates a priority value and exits on failure.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validatePriority(val: string, formatter: OutputFormatter): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Reads the body from a file, returning the content or null on error.
|
|
29
|
+
* Reports the error via formatter on failure.
|
|
30
|
+
*/
|
|
31
|
+
export declare function readBodyOrError(filePath: string, formatter: OutputFormatter): string | null;
|
|
32
|
+
/**
|
|
33
|
+
* Builds the updateInput map from flag-based options.
|
|
34
|
+
* Returns null if validation fails.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildFlagModeInput(options: UpdateOptions, formatter: OutputFormatter): Record<string, string> | null;
|
|
37
|
+
/**
|
|
38
|
+
* Builds the updateInput map from positional (legacy) arguments.
|
|
39
|
+
* Returns null if validation fails.
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildPositionalModeInput(field: string | undefined, value: string | undefined, options: UpdateOptions, formatter: OutputFormatter): Record<string, string> | null;
|
|
42
|
+
//# sourceMappingURL=update-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/update-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAU/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAOjF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAU3F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA8BpH;AAuDD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,eAAe,GACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAO/B"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helper functions for the task update command
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.isFlagMode = isFlagMode;
|
|
10
|
+
exports.validateStatus = validateStatus;
|
|
11
|
+
exports.validatePriority = validatePriority;
|
|
12
|
+
exports.readBodyOrError = readBodyOrError;
|
|
13
|
+
exports.buildFlagModeInput = buildFlagModeInput;
|
|
14
|
+
exports.buildPositionalModeInput = buildPositionalModeInput;
|
|
15
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
16
|
+
const Priority_1 = require("../../../models/Priority");
|
|
17
|
+
const validators_1 = require("../../utils/validators");
|
|
18
|
+
const add_helpers_1 = require("./add-helpers");
|
|
19
|
+
/**
|
|
20
|
+
* Returns true if the user is using flag-based mode (as opposed to positional syntax).
|
|
21
|
+
*/
|
|
22
|
+
function isFlagMode(options, field) {
|
|
23
|
+
const flagFields = [options.title, options.status, options.body, options.author, options.assignees, options.priority];
|
|
24
|
+
return flagFields.some((v) => v !== undefined) || (!!options.file && !field);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validates a status value and exits on failure.
|
|
28
|
+
*/
|
|
29
|
+
function validateStatus(val, formatter) {
|
|
30
|
+
if ((0, validators_1.validateTaskStatus)(val))
|
|
31
|
+
return true;
|
|
32
|
+
formatter.error(`Invalid status: ${val}. Valid statuses: icebox, backlog, ready, in_progress, review, done, closed`, () => {
|
|
33
|
+
console.log(chalk_1.default.red(`\nInvalid status: ${val}`));
|
|
34
|
+
console.log('Valid statuses: icebox, backlog, ready, in_progress, review, done, closed\n');
|
|
35
|
+
});
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validates a priority value and exits on failure.
|
|
40
|
+
*/
|
|
41
|
+
function validatePriority(val, formatter) {
|
|
42
|
+
if (val === '' || (0, Priority_1.isPriority)(val))
|
|
43
|
+
return true;
|
|
44
|
+
formatter.error(`Invalid priority: ${val}. Valid priorities: critical, high, medium, low`, () => {
|
|
45
|
+
console.log(chalk_1.default.red(`\nInvalid priority: ${val}`));
|
|
46
|
+
console.log('Valid priorities: critical, high, medium, low\n');
|
|
47
|
+
});
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Reads the body from a file, returning the content or null on error.
|
|
52
|
+
* Reports the error via formatter on failure.
|
|
53
|
+
*/
|
|
54
|
+
function readBodyOrError(filePath, formatter) {
|
|
55
|
+
try {
|
|
56
|
+
return (0, add_helpers_1.readBodyFromFile)(filePath);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const msg = error instanceof Error ? error.message : 'Error reading file';
|
|
60
|
+
formatter.error(msg, () => {
|
|
61
|
+
console.log(chalk_1.default.red(`\n✗ Error: ${msg}\n`));
|
|
62
|
+
});
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Builds the updateInput map from flag-based options.
|
|
68
|
+
* Returns null if validation fails.
|
|
69
|
+
*/
|
|
70
|
+
function buildFlagModeInput(options, formatter) {
|
|
71
|
+
const flagFields = {
|
|
72
|
+
title: options.title,
|
|
73
|
+
status: options.status,
|
|
74
|
+
body: options.body,
|
|
75
|
+
author: options.author,
|
|
76
|
+
assignees: options.assignees,
|
|
77
|
+
priority: options.priority,
|
|
78
|
+
};
|
|
79
|
+
if (options.file) {
|
|
80
|
+
if (flagFields.body !== undefined) {
|
|
81
|
+
formatter.error('Cannot specify both --body and --file', () => {
|
|
82
|
+
console.log(chalk_1.default.red(`\nError: Cannot specify both --body and --file\n`));
|
|
83
|
+
});
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const body = readBodyOrError(options.file, formatter);
|
|
87
|
+
if (body === null)
|
|
88
|
+
return null;
|
|
89
|
+
flagFields.body = body;
|
|
90
|
+
}
|
|
91
|
+
const updateInput = {};
|
|
92
|
+
for (const [key, val] of Object.entries(flagFields)) {
|
|
93
|
+
if (val === undefined)
|
|
94
|
+
continue;
|
|
95
|
+
if (key === 'status' && !validateStatus(val, formatter))
|
|
96
|
+
return null;
|
|
97
|
+
if (key === 'priority' && !validatePriority(val, formatter))
|
|
98
|
+
return null;
|
|
99
|
+
updateInput[key] = val;
|
|
100
|
+
}
|
|
101
|
+
return updateInput;
|
|
102
|
+
}
|
|
103
|
+
const SUPPORTED_FIELDS = ['status', 'title', 'body', 'author', 'assignees', 'priority'];
|
|
104
|
+
function validateFieldName(field, formatter) {
|
|
105
|
+
if (!field) {
|
|
106
|
+
formatter.error('No fields specified. Use --title, --status, --body, --author, --assignees flags or positional arguments: <field> <value>', () => {
|
|
107
|
+
console.log(chalk_1.default.red('\nError: No fields specified. Use --title, --status, --body, --author, --assignees flags or positional arguments: <field> <value>\n'));
|
|
108
|
+
});
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (!SUPPORTED_FIELDS.includes(field)) {
|
|
112
|
+
formatter.error(`Unsupported field: ${field}. Supported fields: ${SUPPORTED_FIELDS.join(', ')}`, () => {
|
|
113
|
+
console.log(chalk_1.default.red(`\nUnsupported field: ${field}`));
|
|
114
|
+
console.log(`Supported fields: ${SUPPORTED_FIELDS.join(', ')}\n`);
|
|
115
|
+
});
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
function resolvePositionalValue(field, value, options, formatter) {
|
|
121
|
+
if (options.file && field !== 'body') {
|
|
122
|
+
formatter.error('--file option is only valid for the body field', () => {
|
|
123
|
+
console.log(chalk_1.default.red(`\nError: --file option is only valid for the body field\n`));
|
|
124
|
+
});
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
if (options.file) {
|
|
128
|
+
return readBodyOrError(options.file, formatter);
|
|
129
|
+
}
|
|
130
|
+
if (value === undefined) {
|
|
131
|
+
formatter.error(`Missing value for field '${field}'. Provide a value argument or use --file for body.`, () => {
|
|
132
|
+
console.log(chalk_1.default.red(`\nError: Missing value for field '${field}'. Provide a value argument or use --file for body.\n`));
|
|
133
|
+
});
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Builds the updateInput map from positional (legacy) arguments.
|
|
140
|
+
* Returns null if validation fails.
|
|
141
|
+
*/
|
|
142
|
+
function buildPositionalModeInput(field, value, options, formatter) {
|
|
143
|
+
if (!validateFieldName(field, formatter))
|
|
144
|
+
return null;
|
|
145
|
+
const resolvedValue = resolvePositionalValue(field, value, options, formatter);
|
|
146
|
+
if (resolvedValue === null)
|
|
147
|
+
return null;
|
|
148
|
+
if (field === 'status' && !validateStatus(resolvedValue, formatter))
|
|
149
|
+
return null;
|
|
150
|
+
if (field === 'priority' && !validatePriority(resolvedValue, formatter))
|
|
151
|
+
return null;
|
|
152
|
+
return { [field]: resolvedValue };
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=update-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/update-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.setupTaskUpdateParentCommand = setupTaskUpdateParentCommand;
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const
|
|
11
|
+
const service_container_1 = require("../../utils/service-container");
|
|
12
12
|
const error_handler_1 = require("../../utils/error-handler");
|
|
13
13
|
const format_1 = require("../../../utils/format");
|
|
14
14
|
const output_formatter_1 = require("../../utils/output-formatter");
|
|
@@ -26,7 +26,7 @@ function setupTaskUpdateParentCommand(program) {
|
|
|
26
26
|
.action(async (id, parentId, options) => {
|
|
27
27
|
const formatter = (0, output_formatter_1.createFormatter)(options);
|
|
28
28
|
try {
|
|
29
|
-
const taskService =
|
|
29
|
+
const { taskService } = (0, service_container_1.getServiceContainer)();
|
|
30
30
|
const taskId = (0, error_handler_1.validateNumberInput)(id);
|
|
31
31
|
if (taskId === null) {
|
|
32
32
|
formatter.error('Task ID must be a number', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-parent.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/update-parent.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AASH,oEAgHC;AAtHD,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"update-parent.js","sourceRoot":"","sources":["../../../../src/cli/commands/task/update-parent.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AASH,oEAgHC;AAtHD,kDAA0B;AAC1B,qEAAoE;AACpE,6DAAgE;AAChE,kDAAmE;AACnE,mEAA+D;AAE/D,SAAgB,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW;SACR,OAAO,CAAC,eAAe,CAAC;SACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;SAC3B,QAAQ,CAAC,aAAa,EAAE,wDAAwD,CAAC;SACjF,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,kCAAe,EAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,uCAAmB,GAAE,CAAC;YAE9C,MAAM,MAAM,GAAG,IAAA,mCAAmB,EAAC,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,EAAE;oBAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,+CAA+C;YAC/C,IAAI,cAA6B,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACtD,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAA,mCAAmB,EAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,SAAS,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,EAAE;wBAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;oBACnF,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,cAAc,GAAG,MAAM,CAAC;YAC1B,CAAC;YAED,mCAAmC;YACnC,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC1E,SAAS,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,EAAE;4BAC7E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;wBAChG,CAAC,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;4BAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;wBAC1D,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;wBAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,EAAE,GAAG,EAAE;oBACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,gBAAgB;YAChB,SAAS,CAAC,MAAM,CACd,GAAG,EAAE;gBACH,4BAA4B;gBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/E,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,UAAU;iBACnB,CAAC;YACJ,CAAC,EACD,GAAG,EAAE;gBACH,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,eAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAE3E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACvD,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,EAAE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;oBAClF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAA,mBAAU,EAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,EAAE,GAAG,EAAE;gBACzF,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB7D"}
|
|
@@ -8,14 +8,61 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.setupTaskUpdateCommand = setupTaskUpdateCommand;
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const
|
|
12
|
-
const Priority_1 = require("../../../models/Priority");
|
|
11
|
+
const service_container_1 = require("../../utils/service-container");
|
|
13
12
|
const error_handler_1 = require("../../utils/error-handler");
|
|
14
|
-
const validators_1 = require("../../utils/validators");
|
|
15
13
|
const format_1 = require("../../../utils/format");
|
|
16
14
|
const output_formatter_1 = require("../../utils/output-formatter");
|
|
17
|
-
const
|
|
18
|
-
|
|
15
|
+
const update_helpers_1 = require("./update-helpers");
|
|
16
|
+
function applyTaskUpdate(taskService, taskId, updateInput) {
|
|
17
|
+
return taskService.updateTask(taskId, {
|
|
18
|
+
...(updateInput.status !== undefined && { status: updateInput.status }),
|
|
19
|
+
...(updateInput.title !== undefined && { title: updateInput.title }),
|
|
20
|
+
...(updateInput.body !== undefined && { body: updateInput.body }),
|
|
21
|
+
...(updateInput.author !== undefined && { author: updateInput.author }),
|
|
22
|
+
...(updateInput.assignees !== undefined && { assignees: updateInput.assignees }),
|
|
23
|
+
...(updateInput.priority !== undefined && {
|
|
24
|
+
priority: updateInput.priority === '' ? null : updateInput.priority,
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async function handleUpdateAction(id, field, value, options) {
|
|
29
|
+
const formatter = (0, output_formatter_1.createFormatter)(options);
|
|
30
|
+
try {
|
|
31
|
+
const { taskService } = (0, service_container_1.getServiceContainer)();
|
|
32
|
+
const taskId = (0, error_handler_1.validateNumberInput)(id);
|
|
33
|
+
if (taskId === null) {
|
|
34
|
+
formatter.error('Task ID must be a number', () => {
|
|
35
|
+
console.log(chalk_1.default.red('\nError: Task ID must be a number\n'));
|
|
36
|
+
});
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
const updateInput = (0, update_helpers_1.isFlagMode)(options, field)
|
|
40
|
+
? (0, update_helpers_1.buildFlagModeInput)(options, formatter)
|
|
41
|
+
: (0, update_helpers_1.buildPositionalModeInput)(field, value, options, formatter);
|
|
42
|
+
if (updateInput === null) {
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
const task = applyTaskUpdate(taskService, taskId, updateInput);
|
|
46
|
+
if (!task) {
|
|
47
|
+
formatter.error(`Task with ID ${id} not found`, () => {
|
|
48
|
+
console.log(chalk_1.default.red(`\nTask with ID ${id} not found\n`));
|
|
49
|
+
});
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
renderSuccess(taskService, task, formatter);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof Error) {
|
|
56
|
+
(0, error_handler_1.handleError)(error, options);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
formatter.error('An unknown error occurred', () => {
|
|
60
|
+
console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
19
66
|
function setupTaskUpdateCommand(program) {
|
|
20
67
|
const taskCommand = program.commands.find((cmd) => cmd.name() === 'task');
|
|
21
68
|
if (!taskCommand) {
|
|
@@ -35,197 +82,35 @@ function setupTaskUpdateCommand(program) {
|
|
|
35
82
|
.option('--file <path>', 'Read body from file (only valid for body field)')
|
|
36
83
|
.option('--json', 'Output in JSON format')
|
|
37
84
|
.description('Update a task field')
|
|
38
|
-
.action(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
console.log(chalk_1.default.red(`\nError: Cannot specify both --body and --file\n`));
|
|
67
|
-
});
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
flagFields.body = (0, add_helpers_1.readBodyFromFile)(options.file);
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
const msg = error instanceof Error ? error.message : 'Error reading file';
|
|
75
|
-
formatter.error(msg, () => {
|
|
76
|
-
console.log(chalk_1.default.red(`\n✗ Error: ${msg}\n`));
|
|
77
|
-
});
|
|
78
|
-
process.exit(1);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
for (const [key, val] of Object.entries(flagFields)) {
|
|
82
|
-
if (val !== undefined) {
|
|
83
|
-
if (key === 'status') {
|
|
84
|
-
if (!(0, validators_1.validateTaskStatus)(val)) {
|
|
85
|
-
formatter.error(`Invalid status: ${val}. Valid statuses: icebox, backlog, ready, in_progress, review, done, closed`, () => {
|
|
86
|
-
console.log(chalk_1.default.red(`\nInvalid status: ${val}`));
|
|
87
|
-
console.log('Valid statuses: icebox, backlog, ready, in_progress, review, done, closed\n');
|
|
88
|
-
});
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (key === 'priority' && val !== '') {
|
|
93
|
-
if (!(0, Priority_1.isPriority)(val)) {
|
|
94
|
-
formatter.error(`Invalid priority: ${val}. Valid priorities: critical, high, medium, low`, () => {
|
|
95
|
-
console.log(chalk_1.default.red(`\nInvalid priority: ${val}`));
|
|
96
|
-
console.log('Valid priorities: critical, high, medium, low\n');
|
|
97
|
-
});
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
updateInput[key] = val;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
// Legacy positional mode: <id> <field> <value>
|
|
107
|
-
if (!field) {
|
|
108
|
-
formatter.error('No fields specified. Use --title, --status, --body, --author, --assignees flags or positional arguments: <field> <value>', () => {
|
|
109
|
-
console.log(chalk_1.default.red('\nError: No fields specified. Use --title, --status, --body, --author, --assignees flags or positional arguments: <field> <value>\n'));
|
|
110
|
-
});
|
|
111
|
-
process.exit(1);
|
|
112
|
-
}
|
|
113
|
-
if (!SUPPORTED_FIELDS.includes(field)) {
|
|
114
|
-
formatter.error(`Unsupported field: ${field}. Supported fields: ${SUPPORTED_FIELDS.join(', ')}`, () => {
|
|
115
|
-
console.log(chalk_1.default.red(`\nUnsupported field: ${field}`));
|
|
116
|
-
console.log(`Supported fields: ${SUPPORTED_FIELDS.join(', ')}\n`);
|
|
117
|
-
});
|
|
118
|
-
process.exit(1);
|
|
119
|
-
}
|
|
120
|
-
// Validate --file option usage
|
|
121
|
-
if (options.file && field !== 'body') {
|
|
122
|
-
formatter.error('--file option is only valid for the body field', () => {
|
|
123
|
-
console.log(chalk_1.default.red(`\nError: --file option is only valid for the body field\n`));
|
|
124
|
-
});
|
|
125
|
-
process.exit(1);
|
|
126
|
-
}
|
|
127
|
-
// Resolve the body value from file if --file is specified
|
|
128
|
-
let resolvedValue = value;
|
|
129
|
-
if (options.file) {
|
|
130
|
-
try {
|
|
131
|
-
resolvedValue = (0, add_helpers_1.readBodyFromFile)(options.file);
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
const msg = error instanceof Error ? error.message : 'Error reading file';
|
|
135
|
-
formatter.error(msg, () => {
|
|
136
|
-
console.log(chalk_1.default.red(`\n✗ Error: ${msg}\n`));
|
|
137
|
-
});
|
|
138
|
-
process.exit(1);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// Require a value when not using --file
|
|
142
|
-
if (resolvedValue === undefined) {
|
|
143
|
-
formatter.error(`Missing value for field '${field}'. Provide a value argument or use --file for body.`, () => {
|
|
144
|
-
console.log(chalk_1.default.red(`\nError: Missing value for field '${field}'. Provide a value argument or use --file for body.\n`));
|
|
145
|
-
});
|
|
146
|
-
process.exit(1);
|
|
147
|
-
}
|
|
148
|
-
if (field === 'status') {
|
|
149
|
-
if (!(0, validators_1.validateTaskStatus)(resolvedValue)) {
|
|
150
|
-
formatter.error(`Invalid status: ${resolvedValue}. Valid statuses: icebox, backlog, ready, in_progress, review, done, closed`, () => {
|
|
151
|
-
console.log(chalk_1.default.red(`\nInvalid status: ${resolvedValue}`));
|
|
152
|
-
console.log('Valid statuses: icebox, backlog, ready, in_progress, review, done, closed\n');
|
|
153
|
-
});
|
|
154
|
-
process.exit(1);
|
|
155
|
-
}
|
|
156
|
-
updateInput.status = resolvedValue;
|
|
157
|
-
}
|
|
158
|
-
else if (field === 'priority') {
|
|
159
|
-
if (resolvedValue !== '' && !(0, Priority_1.isPriority)(resolvedValue)) {
|
|
160
|
-
formatter.error(`Invalid priority: ${resolvedValue}. Valid priorities: critical, high, medium, low`, () => {
|
|
161
|
-
console.log(chalk_1.default.red(`\nInvalid priority: ${resolvedValue}`));
|
|
162
|
-
console.log('Valid priorities: critical, high, medium, low\n');
|
|
163
|
-
});
|
|
164
|
-
process.exit(1);
|
|
165
|
-
}
|
|
166
|
-
updateInput.priority = resolvedValue;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
updateInput[field] = resolvedValue;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
const task = taskService.updateTask(taskId, {
|
|
173
|
-
...(updateInput.status !== undefined && { status: updateInput.status }),
|
|
174
|
-
...(updateInput.title !== undefined && { title: updateInput.title }),
|
|
175
|
-
...(updateInput.body !== undefined && { body: updateInput.body }),
|
|
176
|
-
...(updateInput.author !== undefined && { author: updateInput.author }),
|
|
177
|
-
...(updateInput.assignees !== undefined && { assignees: updateInput.assignees }),
|
|
178
|
-
...(updateInput.priority !== undefined && {
|
|
179
|
-
priority: updateInput.priority === '' ? null : updateInput.priority,
|
|
180
|
-
}),
|
|
181
|
-
});
|
|
182
|
-
if (!task) {
|
|
183
|
-
formatter.error(`Task with ID ${id} not found`, () => {
|
|
184
|
-
console.log(chalk_1.default.red(`\nTask with ID ${id} not found\n`));
|
|
185
|
-
});
|
|
186
|
-
process.exit(1);
|
|
187
|
-
}
|
|
188
|
-
const statusCounts = taskService.getTaskCountByStatus();
|
|
189
|
-
const statusColor = (0, format_1.getStatusColor)(task.status);
|
|
190
|
-
formatter.output(() => ({
|
|
191
|
-
success: true,
|
|
192
|
-
task,
|
|
193
|
-
counts: statusCounts,
|
|
194
|
-
}), () => {
|
|
195
|
-
console.log(chalk_1.default.green('\n✓ Task updated successfully\n'));
|
|
196
|
-
console.log(`${chalk_1.default.bold('ID:')} ${task.id}`);
|
|
197
|
-
console.log(`${chalk_1.default.bold('Title:')} ${task.title}`);
|
|
198
|
-
console.log(`${chalk_1.default.bold('Status:')} ${chalk_1.default[statusColor](task.status)}`);
|
|
199
|
-
console.log(`${chalk_1.default.bold('Updated:')} ${(0, format_1.formatDate)(task.updated_at)}\n`);
|
|
200
|
-
// Get and display task count by status
|
|
201
|
-
console.log(chalk_1.default.bold('Task Count by Status:'));
|
|
202
|
-
const statusEntries = [
|
|
203
|
-
{ status: 'icebox', count: statusCounts.icebox },
|
|
204
|
-
{ status: 'backlog', count: statusCounts.backlog },
|
|
205
|
-
{ status: 'ready', count: statusCounts.ready },
|
|
206
|
-
{ status: 'in_progress', count: statusCounts.in_progress },
|
|
207
|
-
{ status: 'review', count: statusCounts.review },
|
|
208
|
-
{ status: 'done', count: statusCounts.done },
|
|
209
|
-
{ status: 'closed', count: statusCounts.closed },
|
|
210
|
-
];
|
|
211
|
-
statusEntries.forEach(({ status, count }) => {
|
|
212
|
-
const color = (0, format_1.getStatusColor)(status);
|
|
213
|
-
console.log(` ${chalk_1.default[color](status)}: ${count}`);
|
|
214
|
-
});
|
|
215
|
-
console.log();
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
catch (error) {
|
|
219
|
-
if (error instanceof Error) {
|
|
220
|
-
(0, error_handler_1.handleError)(error, options);
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
formatter.error('An unknown error occurred', () => {
|
|
224
|
-
console.log(chalk_1.default.red('\n✗ An unknown error occurred\n'));
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
process.exit(1);
|
|
228
|
-
}
|
|
85
|
+
.action(handleUpdateAction);
|
|
86
|
+
}
|
|
87
|
+
function renderSuccess(taskService, task, formatter) {
|
|
88
|
+
const statusCounts = taskService.getTaskCountByStatus();
|
|
89
|
+
const statusColor = (0, format_1.getStatusColor)(task.status);
|
|
90
|
+
formatter.output(() => ({ success: true, task, counts: statusCounts }), () => {
|
|
91
|
+
console.log(chalk_1.default.green('\n✓ Task updated successfully\n'));
|
|
92
|
+
console.log(`${chalk_1.default.bold('ID:')} ${task.id}`);
|
|
93
|
+
console.log(`${chalk_1.default.bold('Title:')} ${task.title}`);
|
|
94
|
+
console.log(`${chalk_1.default.bold('Status:')} ${chalk_1.default[statusColor](task.status)}`);
|
|
95
|
+
console.log(`${chalk_1.default.bold('Updated:')} ${(0, format_1.formatDate)(task.updated_at)}\n`);
|
|
96
|
+
console.log(chalk_1.default.bold('Task Count by Status:'));
|
|
97
|
+
renderStatusCounts(taskService, statusCounts);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function renderStatusCounts(_taskService, statusCounts) {
|
|
101
|
+
const statusEntries = [
|
|
102
|
+
{ status: 'icebox', count: statusCounts.icebox },
|
|
103
|
+
{ status: 'backlog', count: statusCounts.backlog },
|
|
104
|
+
{ status: 'ready', count: statusCounts.ready },
|
|
105
|
+
{ status: 'in_progress', count: statusCounts.in_progress },
|
|
106
|
+
{ status: 'review', count: statusCounts.review },
|
|
107
|
+
{ status: 'done', count: statusCounts.done },
|
|
108
|
+
{ status: 'closed', count: statusCounts.closed },
|
|
109
|
+
];
|
|
110
|
+
statusEntries.forEach(({ status, count }) => {
|
|
111
|
+
const color = (0, format_1.getStatusColor)(status);
|
|
112
|
+
console.log(` ${chalk_1.default[color](status)}: ${count}`);
|
|
229
113
|
});
|
|
114
|
+
console.log();
|
|
230
115
|
}
|
|
231
116
|
//# sourceMappingURL=update.js.map
|