project-roadmap-tracking 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +559 -0
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +5 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +5 -0
- package/dist/commands/add.d.ts +16 -0
- package/dist/commands/add.js +76 -0
- package/dist/commands/complete.d.ts +12 -0
- package/dist/commands/complete.js +35 -0
- package/dist/commands/init.d.ts +26 -0
- package/dist/commands/init.js +111 -0
- package/dist/commands/list.d.ts +13 -0
- package/dist/commands/list.js +101 -0
- package/dist/commands/pass-test.d.ts +10 -0
- package/dist/commands/pass-test.js +28 -0
- package/dist/commands/show.d.ts +10 -0
- package/dist/commands/show.js +73 -0
- package/dist/commands/update.d.ts +16 -0
- package/dist/commands/update.js +78 -0
- package/dist/commands/validate.d.ts +8 -0
- package/dist/commands/validate.js +49 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/util/read-config.d.ts +2 -0
- package/dist/util/read-config.js +5 -0
- package/dist/util/read-roadmap.d.ts +2 -0
- package/dist/util/read-roadmap.js +5 -0
- package/dist/util/types.d.ts +66 -0
- package/dist/util/types.js +36 -0
- package/dist/util/update-task.d.ts +4 -0
- package/dist/util/update-task.js +16 -0
- package/dist/util/validate-task-id.d.ts +2 -0
- package/dist/util/validate-task-id.js +5 -0
- package/dist/util/validate-task.d.ts +4 -0
- package/dist/util/validate-task.js +17 -0
- package/dist/util/write-roadmap.d.ts +2 -0
- package/dist/util/write-roadmap.js +5 -0
- package/oclif.manifest.json +426 -0
- package/package.json +73 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export type Config = {
|
|
2
|
+
$schema: string;
|
|
3
|
+
metadata: {
|
|
4
|
+
description: string;
|
|
5
|
+
name: string;
|
|
6
|
+
};
|
|
7
|
+
path: string;
|
|
8
|
+
};
|
|
9
|
+
export type Roadmap = {
|
|
10
|
+
$schema: string;
|
|
11
|
+
metadata: {
|
|
12
|
+
createdAt: string;
|
|
13
|
+
createdBy: string;
|
|
14
|
+
description: string;
|
|
15
|
+
name: string;
|
|
16
|
+
};
|
|
17
|
+
tasks: Array<Task>;
|
|
18
|
+
};
|
|
19
|
+
export type Tag = string;
|
|
20
|
+
export declare enum PRIORITY {
|
|
21
|
+
High = "high",
|
|
22
|
+
Low = "low",
|
|
23
|
+
Medium = "medium"
|
|
24
|
+
}
|
|
25
|
+
export declare enum STATUS {
|
|
26
|
+
Completed = "completed",
|
|
27
|
+
InProgress = "in-progress",
|
|
28
|
+
NotStarted = "not-started"
|
|
29
|
+
}
|
|
30
|
+
export declare enum TASK_TYPE {
|
|
31
|
+
Bug = "bug",
|
|
32
|
+
Feature = "feature",
|
|
33
|
+
Improvement = "improvement",
|
|
34
|
+
Planning = "planning",
|
|
35
|
+
Research = "research"
|
|
36
|
+
}
|
|
37
|
+
export declare enum TASK_TYPE_LETTER {
|
|
38
|
+
Bug = "B",
|
|
39
|
+
Feature = "F",
|
|
40
|
+
Improvement = "I",
|
|
41
|
+
Planning = "P",
|
|
42
|
+
Research = "R"
|
|
43
|
+
}
|
|
44
|
+
export declare const TASK_TYPE_MAP: Map<TASK_TYPE, TASK_TYPE_LETTER>;
|
|
45
|
+
export type SingleDigit = `${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}`;
|
|
46
|
+
export type TaskID = `${TASK_TYPE_LETTER}-${SingleDigit}${SingleDigit}${SingleDigit}`;
|
|
47
|
+
export declare const TASK_ID_REGEX: RegExp;
|
|
48
|
+
export type Task = {
|
|
49
|
+
assignedTo?: null | string;
|
|
50
|
+
blocks: Array<Task['id']>;
|
|
51
|
+
createdAt?: null | string;
|
|
52
|
+
'depends-on': Array<Task['id']>;
|
|
53
|
+
details: string;
|
|
54
|
+
dueDate?: null | string;
|
|
55
|
+
effort?: null | number;
|
|
56
|
+
'github-refs'?: Array<string>;
|
|
57
|
+
id: TaskID;
|
|
58
|
+
notes?: null | string;
|
|
59
|
+
'passes-tests': boolean;
|
|
60
|
+
priority: PRIORITY;
|
|
61
|
+
status: STATUS;
|
|
62
|
+
tags: Array<Tag>;
|
|
63
|
+
title: string;
|
|
64
|
+
type: TASK_TYPE;
|
|
65
|
+
updatedAt?: null | string;
|
|
66
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export var PRIORITY;
|
|
2
|
+
(function (PRIORITY) {
|
|
3
|
+
PRIORITY["High"] = "high";
|
|
4
|
+
PRIORITY["Low"] = "low";
|
|
5
|
+
PRIORITY["Medium"] = "medium";
|
|
6
|
+
})(PRIORITY || (PRIORITY = {}));
|
|
7
|
+
export var STATUS;
|
|
8
|
+
(function (STATUS) {
|
|
9
|
+
STATUS["Completed"] = "completed";
|
|
10
|
+
STATUS["InProgress"] = "in-progress";
|
|
11
|
+
STATUS["NotStarted"] = "not-started";
|
|
12
|
+
})(STATUS || (STATUS = {}));
|
|
13
|
+
export var TASK_TYPE;
|
|
14
|
+
(function (TASK_TYPE) {
|
|
15
|
+
TASK_TYPE["Bug"] = "bug";
|
|
16
|
+
TASK_TYPE["Feature"] = "feature";
|
|
17
|
+
TASK_TYPE["Improvement"] = "improvement";
|
|
18
|
+
TASK_TYPE["Planning"] = "planning";
|
|
19
|
+
TASK_TYPE["Research"] = "research";
|
|
20
|
+
})(TASK_TYPE || (TASK_TYPE = {}));
|
|
21
|
+
export var TASK_TYPE_LETTER;
|
|
22
|
+
(function (TASK_TYPE_LETTER) {
|
|
23
|
+
TASK_TYPE_LETTER["Bug"] = "B";
|
|
24
|
+
TASK_TYPE_LETTER["Feature"] = "F";
|
|
25
|
+
TASK_TYPE_LETTER["Improvement"] = "I";
|
|
26
|
+
TASK_TYPE_LETTER["Planning"] = "P";
|
|
27
|
+
TASK_TYPE_LETTER["Research"] = "R";
|
|
28
|
+
})(TASK_TYPE_LETTER || (TASK_TYPE_LETTER = {}));
|
|
29
|
+
export const TASK_TYPE_MAP = new Map([
|
|
30
|
+
[TASK_TYPE.Bug, TASK_TYPE_LETTER.Bug],
|
|
31
|
+
[TASK_TYPE.Feature, TASK_TYPE_LETTER.Feature],
|
|
32
|
+
[TASK_TYPE.Improvement, TASK_TYPE_LETTER.Improvement],
|
|
33
|
+
[TASK_TYPE.Planning, TASK_TYPE_LETTER.Planning],
|
|
34
|
+
[TASK_TYPE.Research, TASK_TYPE_LETTER.Research],
|
|
35
|
+
]);
|
|
36
|
+
export const TASK_ID_REGEX = /^(B|F|I|P|R)-[0-9]{3}$/;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export async function updateTaskInRoadmap(roadmap, taskId, updates) {
|
|
2
|
+
const taskIndex = roadmap.tasks.findIndex((task) => task.id === taskId);
|
|
3
|
+
if (taskIndex === -1) {
|
|
4
|
+
throw new Error(`Task with ID ${taskId} not found`);
|
|
5
|
+
}
|
|
6
|
+
const updatedTask = {
|
|
7
|
+
...roadmap.tasks[taskIndex],
|
|
8
|
+
...updates,
|
|
9
|
+
updatedAt: new Date().toISOString(),
|
|
10
|
+
};
|
|
11
|
+
const updatedRoadmap = {
|
|
12
|
+
...roadmap,
|
|
13
|
+
tasks: [...roadmap.tasks.slice(0, taskIndex), updatedTask, ...roadmap.tasks.slice(taskIndex + 1)],
|
|
14
|
+
};
|
|
15
|
+
return updatedRoadmap;
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function validateTask(task, { skipID } = {}) {
|
|
2
|
+
if (!skipID && !/^(B|F|I|P|R)-[0-9]{3}$/.test(task.id)) {
|
|
3
|
+
throw new Error(`task ID ${task.id} is not valid. Must match format: [B|F|I|P|R]-[000-999]`);
|
|
4
|
+
}
|
|
5
|
+
if (!['bug', 'feature', 'improvement', 'planning', 'research'].includes(task.type)) {
|
|
6
|
+
throw new Error(`task ${skipID ? '' : `ID ${task.id}`} has invalid type: ${task.type}`);
|
|
7
|
+
}
|
|
8
|
+
if (!['high', 'low', 'medium'].includes(task.priority)) {
|
|
9
|
+
throw new Error(`task ${skipID ? '' : `ID ${task.id}`} has invalid priority: ${task.priority}`);
|
|
10
|
+
}
|
|
11
|
+
if (!['completed', 'in-progress', 'not-started'].includes(task.status)) {
|
|
12
|
+
throw new Error(`task ${skipID ? '' : `ID ${task.id}`} has invalid status: ${task.status}`);
|
|
13
|
+
}
|
|
14
|
+
if (!task.details) {
|
|
15
|
+
throw new Error(`task ${skipID ? '' : `ID ${task.id}`} must have details`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
{
|
|
2
|
+
"commands": {
|
|
3
|
+
"add": {
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"args": {
|
|
6
|
+
"title": {
|
|
7
|
+
"description": "title of the task to add",
|
|
8
|
+
"name": "title",
|
|
9
|
+
"required": true
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"description": "add a new task to the roadmap",
|
|
13
|
+
"examples": [
|
|
14
|
+
"<%= config.bin %> <%= command.id %>"
|
|
15
|
+
],
|
|
16
|
+
"flags": {
|
|
17
|
+
"details": {
|
|
18
|
+
"char": "d",
|
|
19
|
+
"description": "description of the task to add",
|
|
20
|
+
"name": "details",
|
|
21
|
+
"required": true,
|
|
22
|
+
"hasDynamicHelp": false,
|
|
23
|
+
"multiple": false,
|
|
24
|
+
"type": "option"
|
|
25
|
+
},
|
|
26
|
+
"priority": {
|
|
27
|
+
"char": "p",
|
|
28
|
+
"description": "priority of the task to add",
|
|
29
|
+
"name": "priority",
|
|
30
|
+
"required": false,
|
|
31
|
+
"default": "medium",
|
|
32
|
+
"hasDynamicHelp": false,
|
|
33
|
+
"multiple": false,
|
|
34
|
+
"options": [
|
|
35
|
+
"high",
|
|
36
|
+
"medium",
|
|
37
|
+
"low"
|
|
38
|
+
],
|
|
39
|
+
"type": "option"
|
|
40
|
+
},
|
|
41
|
+
"status": {
|
|
42
|
+
"char": "s",
|
|
43
|
+
"description": "status of the task to add",
|
|
44
|
+
"name": "status",
|
|
45
|
+
"required": false,
|
|
46
|
+
"default": "not-started",
|
|
47
|
+
"hasDynamicHelp": false,
|
|
48
|
+
"multiple": false,
|
|
49
|
+
"options": [
|
|
50
|
+
"not-started",
|
|
51
|
+
"in-progress",
|
|
52
|
+
"completed"
|
|
53
|
+
],
|
|
54
|
+
"type": "option"
|
|
55
|
+
},
|
|
56
|
+
"tags": {
|
|
57
|
+
"char": "g",
|
|
58
|
+
"description": "comma-separated list of tags to add to the task",
|
|
59
|
+
"name": "tags",
|
|
60
|
+
"required": false,
|
|
61
|
+
"hasDynamicHelp": false,
|
|
62
|
+
"multiple": false,
|
|
63
|
+
"type": "option"
|
|
64
|
+
},
|
|
65
|
+
"type": {
|
|
66
|
+
"char": "t",
|
|
67
|
+
"description": "type of the task to add",
|
|
68
|
+
"name": "type",
|
|
69
|
+
"required": true,
|
|
70
|
+
"hasDynamicHelp": false,
|
|
71
|
+
"multiple": false,
|
|
72
|
+
"options": [
|
|
73
|
+
"bug",
|
|
74
|
+
"feature",
|
|
75
|
+
"improvement",
|
|
76
|
+
"planning",
|
|
77
|
+
"research"
|
|
78
|
+
],
|
|
79
|
+
"type": "option"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"hasDynamicHelp": false,
|
|
83
|
+
"hiddenAliases": [],
|
|
84
|
+
"id": "add",
|
|
85
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
86
|
+
"pluginName": "project-roadmap-tracking",
|
|
87
|
+
"pluginType": "core",
|
|
88
|
+
"strict": true,
|
|
89
|
+
"enableJsonFlag": false,
|
|
90
|
+
"isESM": true,
|
|
91
|
+
"relativePath": [
|
|
92
|
+
"dist",
|
|
93
|
+
"commands",
|
|
94
|
+
"add.js"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"complete": {
|
|
98
|
+
"aliases": [],
|
|
99
|
+
"args": {
|
|
100
|
+
"taskID": {
|
|
101
|
+
"description": "ID of the task to complete",
|
|
102
|
+
"name": "taskID",
|
|
103
|
+
"required": true
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"description": "Mark a task as completed",
|
|
107
|
+
"examples": [
|
|
108
|
+
"<%= config.bin %> <%= command.id %> F-001 --tests"
|
|
109
|
+
],
|
|
110
|
+
"flags": {
|
|
111
|
+
"tests": {
|
|
112
|
+
"char": "t",
|
|
113
|
+
"description": "mark task as passes-tests",
|
|
114
|
+
"name": "tests",
|
|
115
|
+
"allowNo": false,
|
|
116
|
+
"type": "boolean"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"hasDynamicHelp": false,
|
|
120
|
+
"hiddenAliases": [],
|
|
121
|
+
"id": "complete",
|
|
122
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
123
|
+
"pluginName": "project-roadmap-tracking",
|
|
124
|
+
"pluginType": "core",
|
|
125
|
+
"strict": true,
|
|
126
|
+
"enableJsonFlag": false,
|
|
127
|
+
"isESM": true,
|
|
128
|
+
"relativePath": [
|
|
129
|
+
"dist",
|
|
130
|
+
"commands",
|
|
131
|
+
"complete.js"
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"init": {
|
|
135
|
+
"aliases": [],
|
|
136
|
+
"args": {
|
|
137
|
+
"folder": {
|
|
138
|
+
"description": "folder to initialize the project roadmap in",
|
|
139
|
+
"name": "folder"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"description": "initialize a new project roadmap (prt.json and prt.config.json)",
|
|
143
|
+
"examples": [
|
|
144
|
+
"<%= config.bin %> <%= command.id %> [path/to/directory]"
|
|
145
|
+
],
|
|
146
|
+
"flags": {
|
|
147
|
+
"description": {
|
|
148
|
+
"char": "d",
|
|
149
|
+
"description": "description to print",
|
|
150
|
+
"name": "description",
|
|
151
|
+
"hasDynamicHelp": false,
|
|
152
|
+
"multiple": false,
|
|
153
|
+
"type": "option"
|
|
154
|
+
},
|
|
155
|
+
"force": {
|
|
156
|
+
"char": "f",
|
|
157
|
+
"description": "force initialization even if files already exist",
|
|
158
|
+
"name": "force",
|
|
159
|
+
"allowNo": false,
|
|
160
|
+
"type": "boolean"
|
|
161
|
+
},
|
|
162
|
+
"name": {
|
|
163
|
+
"char": "n",
|
|
164
|
+
"description": "name to print",
|
|
165
|
+
"name": "name",
|
|
166
|
+
"hasDynamicHelp": false,
|
|
167
|
+
"multiple": false,
|
|
168
|
+
"type": "option"
|
|
169
|
+
},
|
|
170
|
+
"withSampleTasks": {
|
|
171
|
+
"description": "include sample tasks in the initialized roadmap",
|
|
172
|
+
"name": "withSampleTasks",
|
|
173
|
+
"allowNo": false,
|
|
174
|
+
"type": "boolean"
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"hasDynamicHelp": false,
|
|
178
|
+
"hiddenAliases": [],
|
|
179
|
+
"id": "init",
|
|
180
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
181
|
+
"pluginName": "project-roadmap-tracking",
|
|
182
|
+
"pluginType": "core",
|
|
183
|
+
"strict": true,
|
|
184
|
+
"enableJsonFlag": false,
|
|
185
|
+
"isESM": true,
|
|
186
|
+
"relativePath": [
|
|
187
|
+
"dist",
|
|
188
|
+
"commands",
|
|
189
|
+
"init.js"
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
"list": {
|
|
193
|
+
"aliases": [],
|
|
194
|
+
"args": {},
|
|
195
|
+
"description": "list tasks in the project roadmap",
|
|
196
|
+
"examples": [
|
|
197
|
+
"<%= config.bin %> <%= command.id %> -p=h --incomplete --sort=createdAt"
|
|
198
|
+
],
|
|
199
|
+
"flags": {
|
|
200
|
+
"incomplete": {
|
|
201
|
+
"char": "i",
|
|
202
|
+
"description": "filter tasks to show in-progress and not-started only",
|
|
203
|
+
"name": "incomplete",
|
|
204
|
+
"allowNo": false,
|
|
205
|
+
"type": "boolean"
|
|
206
|
+
},
|
|
207
|
+
"priority": {
|
|
208
|
+
"char": "p",
|
|
209
|
+
"description": "filter tasks by priority (high, medium, low)",
|
|
210
|
+
"name": "priority",
|
|
211
|
+
"hasDynamicHelp": false,
|
|
212
|
+
"multiple": false,
|
|
213
|
+
"options": [
|
|
214
|
+
"high",
|
|
215
|
+
"medium",
|
|
216
|
+
"low",
|
|
217
|
+
"h",
|
|
218
|
+
"m",
|
|
219
|
+
"l"
|
|
220
|
+
],
|
|
221
|
+
"type": "option"
|
|
222
|
+
},
|
|
223
|
+
"sort": {
|
|
224
|
+
"char": "o",
|
|
225
|
+
"description": "sort tasks by field (dueDate, priority, createdAt)",
|
|
226
|
+
"name": "sort",
|
|
227
|
+
"hasDynamicHelp": false,
|
|
228
|
+
"multiple": false,
|
|
229
|
+
"options": [
|
|
230
|
+
"dueDate",
|
|
231
|
+
"priority",
|
|
232
|
+
"createdAt"
|
|
233
|
+
],
|
|
234
|
+
"type": "option"
|
|
235
|
+
},
|
|
236
|
+
"status": {
|
|
237
|
+
"char": "s",
|
|
238
|
+
"description": "filter tasks by status (completed, in-progress, not-started)",
|
|
239
|
+
"name": "status",
|
|
240
|
+
"hasDynamicHelp": false,
|
|
241
|
+
"multiple": false,
|
|
242
|
+
"options": [
|
|
243
|
+
"completed",
|
|
244
|
+
"in-progress",
|
|
245
|
+
"not-started"
|
|
246
|
+
],
|
|
247
|
+
"type": "option"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"hasDynamicHelp": false,
|
|
251
|
+
"hiddenAliases": [],
|
|
252
|
+
"id": "list",
|
|
253
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
254
|
+
"pluginName": "project-roadmap-tracking",
|
|
255
|
+
"pluginType": "core",
|
|
256
|
+
"strict": true,
|
|
257
|
+
"enableJsonFlag": false,
|
|
258
|
+
"isESM": true,
|
|
259
|
+
"relativePath": [
|
|
260
|
+
"dist",
|
|
261
|
+
"commands",
|
|
262
|
+
"list.js"
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
"pass-test": {
|
|
266
|
+
"aliases": [],
|
|
267
|
+
"args": {
|
|
268
|
+
"taskID": {
|
|
269
|
+
"description": "ID of the task to mark as passing tests",
|
|
270
|
+
"name": "taskID",
|
|
271
|
+
"required": true
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
"description": "Mark a task as passes-tests",
|
|
275
|
+
"examples": [
|
|
276
|
+
"<%= config.bin %> <%= command.id %> F-001"
|
|
277
|
+
],
|
|
278
|
+
"flags": {},
|
|
279
|
+
"hasDynamicHelp": false,
|
|
280
|
+
"hiddenAliases": [],
|
|
281
|
+
"id": "pass-test",
|
|
282
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
283
|
+
"pluginName": "project-roadmap-tracking",
|
|
284
|
+
"pluginType": "core",
|
|
285
|
+
"strict": true,
|
|
286
|
+
"enableJsonFlag": false,
|
|
287
|
+
"isESM": true,
|
|
288
|
+
"relativePath": [
|
|
289
|
+
"dist",
|
|
290
|
+
"commands",
|
|
291
|
+
"pass-test.js"
|
|
292
|
+
]
|
|
293
|
+
},
|
|
294
|
+
"show": {
|
|
295
|
+
"aliases": [],
|
|
296
|
+
"args": {
|
|
297
|
+
"task": {
|
|
298
|
+
"description": "task ID to show",
|
|
299
|
+
"name": "task",
|
|
300
|
+
"required": true
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
"description": "show details of a specific task in the project roadmap",
|
|
304
|
+
"examples": [
|
|
305
|
+
"<%= config.bin %> <%= command.id %> F-001"
|
|
306
|
+
],
|
|
307
|
+
"flags": {},
|
|
308
|
+
"hasDynamicHelp": false,
|
|
309
|
+
"hiddenAliases": [],
|
|
310
|
+
"id": "show",
|
|
311
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
312
|
+
"pluginName": "project-roadmap-tracking",
|
|
313
|
+
"pluginType": "core",
|
|
314
|
+
"strict": true,
|
|
315
|
+
"enableJsonFlag": false,
|
|
316
|
+
"isESM": true,
|
|
317
|
+
"relativePath": [
|
|
318
|
+
"dist",
|
|
319
|
+
"commands",
|
|
320
|
+
"show.js"
|
|
321
|
+
]
|
|
322
|
+
},
|
|
323
|
+
"update": {
|
|
324
|
+
"aliases": [],
|
|
325
|
+
"args": {
|
|
326
|
+
"taskID": {
|
|
327
|
+
"description": "ID of the task to update",
|
|
328
|
+
"name": "taskID",
|
|
329
|
+
"required": true
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"description": "Update a task in place",
|
|
333
|
+
"examples": [
|
|
334
|
+
"<%= config.bin %> <%= command.id %> F-001 --status=completed --tested=true --notes=\"Fixed all bugs\"",
|
|
335
|
+
"<%= config.bin %> <%= command.id %> F-002 --deps=\"F-001\" --clear-notes"
|
|
336
|
+
],
|
|
337
|
+
"flags": {
|
|
338
|
+
"clear-notes": {
|
|
339
|
+
"description": "clear all notes from the task",
|
|
340
|
+
"name": "clear-notes",
|
|
341
|
+
"allowNo": false,
|
|
342
|
+
"type": "boolean"
|
|
343
|
+
},
|
|
344
|
+
"deps": {
|
|
345
|
+
"char": "d",
|
|
346
|
+
"description": "update the dependencies of the task (comma-separated list of task IDs)",
|
|
347
|
+
"name": "deps",
|
|
348
|
+
"hasDynamicHelp": false,
|
|
349
|
+
"multiple": false,
|
|
350
|
+
"type": "option"
|
|
351
|
+
},
|
|
352
|
+
"notes": {
|
|
353
|
+
"char": "n",
|
|
354
|
+
"description": "append notes to the task",
|
|
355
|
+
"name": "notes",
|
|
356
|
+
"hasDynamicHelp": false,
|
|
357
|
+
"multiple": false,
|
|
358
|
+
"type": "option"
|
|
359
|
+
},
|
|
360
|
+
"status": {
|
|
361
|
+
"char": "s",
|
|
362
|
+
"description": "set the status of the task (completed, in-progress, not-started)",
|
|
363
|
+
"name": "status",
|
|
364
|
+
"hasDynamicHelp": false,
|
|
365
|
+
"multiple": false,
|
|
366
|
+
"options": [
|
|
367
|
+
"completed",
|
|
368
|
+
"in-progress",
|
|
369
|
+
"not-started"
|
|
370
|
+
],
|
|
371
|
+
"type": "option"
|
|
372
|
+
},
|
|
373
|
+
"tested": {
|
|
374
|
+
"char": "t",
|
|
375
|
+
"description": "update whether the task passes tests",
|
|
376
|
+
"name": "tested",
|
|
377
|
+
"hasDynamicHelp": false,
|
|
378
|
+
"multiple": false,
|
|
379
|
+
"options": [
|
|
380
|
+
"true",
|
|
381
|
+
"false"
|
|
382
|
+
],
|
|
383
|
+
"type": "option"
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
"hasDynamicHelp": false,
|
|
387
|
+
"hiddenAliases": [],
|
|
388
|
+
"id": "update",
|
|
389
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
390
|
+
"pluginName": "project-roadmap-tracking",
|
|
391
|
+
"pluginType": "core",
|
|
392
|
+
"strict": true,
|
|
393
|
+
"enableJsonFlag": false,
|
|
394
|
+
"isESM": true,
|
|
395
|
+
"relativePath": [
|
|
396
|
+
"dist",
|
|
397
|
+
"commands",
|
|
398
|
+
"update.js"
|
|
399
|
+
]
|
|
400
|
+
},
|
|
401
|
+
"validate": {
|
|
402
|
+
"aliases": [],
|
|
403
|
+
"args": {},
|
|
404
|
+
"description": "describe the command here",
|
|
405
|
+
"examples": [
|
|
406
|
+
"<%= config.bin %> <%= command.id %>"
|
|
407
|
+
],
|
|
408
|
+
"flags": {},
|
|
409
|
+
"hasDynamicHelp": false,
|
|
410
|
+
"hiddenAliases": [],
|
|
411
|
+
"id": "validate",
|
|
412
|
+
"pluginAlias": "project-roadmap-tracking",
|
|
413
|
+
"pluginName": "project-roadmap-tracking",
|
|
414
|
+
"pluginType": "core",
|
|
415
|
+
"strict": true,
|
|
416
|
+
"enableJsonFlag": false,
|
|
417
|
+
"isESM": true,
|
|
418
|
+
"relativePath": [
|
|
419
|
+
"dist",
|
|
420
|
+
"commands",
|
|
421
|
+
"validate.js"
|
|
422
|
+
]
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
"version": "0.1.0"
|
|
426
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "project-roadmap-tracking",
|
|
3
|
+
"description": "CLI based project task tracking",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"author": "ZacharyEggert",
|
|
6
|
+
"bin": {
|
|
7
|
+
"prt": "./bin/run.js"
|
|
8
|
+
},
|
|
9
|
+
"bugs": "https://github.com/ZacharyEggert/project-roadmap-tracking/issues",
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@oclif/core": "^4",
|
|
12
|
+
"@oclif/plugin-help": "^6",
|
|
13
|
+
"@oclif/plugin-plugins": "^5"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@eslint/compat": "^1",
|
|
17
|
+
"@oclif/prettier-config": "^0.2.1",
|
|
18
|
+
"@oclif/test": "^4",
|
|
19
|
+
"@types/chai": "^4",
|
|
20
|
+
"@types/mocha": "^10",
|
|
21
|
+
"@types/node": "^18",
|
|
22
|
+
"chai": "^4",
|
|
23
|
+
"eslint": "^9",
|
|
24
|
+
"eslint-config-oclif": "^6",
|
|
25
|
+
"eslint-config-prettier": "^10",
|
|
26
|
+
"mocha": "^10",
|
|
27
|
+
"oclif": "^4",
|
|
28
|
+
"shx": "^0.3.3",
|
|
29
|
+
"ts-node": "^10",
|
|
30
|
+
"typescript": "^5"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18.0.0"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"./bin",
|
|
37
|
+
"./dist",
|
|
38
|
+
"./oclif.manifest.json"
|
|
39
|
+
],
|
|
40
|
+
"homepage": "https://github.com/ZacharyEggert/project-roadmap-tracking",
|
|
41
|
+
"keywords": [
|
|
42
|
+
"oclif"
|
|
43
|
+
],
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"main": "dist/index.js",
|
|
46
|
+
"type": "module",
|
|
47
|
+
"oclif": {
|
|
48
|
+
"bin": "prt",
|
|
49
|
+
"dirname": "prt",
|
|
50
|
+
"commands": "./dist/commands",
|
|
51
|
+
"plugins": [
|
|
52
|
+
"@oclif/plugin-help",
|
|
53
|
+
"@oclif/plugin-plugins"
|
|
54
|
+
],
|
|
55
|
+
"topicSeparator": " ",
|
|
56
|
+
"topics": {
|
|
57
|
+
"hello": {
|
|
58
|
+
"description": "Say hello to the world and others"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"repository": "ZacharyEggert/project-roadmap-tracking",
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "shx rm -rf dist && tsc",
|
|
65
|
+
"lint": "eslint",
|
|
66
|
+
"postpack": "shx rm -f oclif.manifest.json",
|
|
67
|
+
"posttest": "yarn lint",
|
|
68
|
+
"prepack": "oclif manifest && oclif readme",
|
|
69
|
+
"test": "mocha --forbid-only \"test/**/*.test.ts\"",
|
|
70
|
+
"version": "oclif readme && git add README.md"
|
|
71
|
+
},
|
|
72
|
+
"types": "dist/index.d.ts"
|
|
73
|
+
}
|