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.
Files changed (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +559 -0
  3. package/bin/dev.cmd +3 -0
  4. package/bin/dev.js +5 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.js +5 -0
  7. package/dist/commands/add.d.ts +16 -0
  8. package/dist/commands/add.js +76 -0
  9. package/dist/commands/complete.d.ts +12 -0
  10. package/dist/commands/complete.js +35 -0
  11. package/dist/commands/init.d.ts +26 -0
  12. package/dist/commands/init.js +111 -0
  13. package/dist/commands/list.d.ts +13 -0
  14. package/dist/commands/list.js +101 -0
  15. package/dist/commands/pass-test.d.ts +10 -0
  16. package/dist/commands/pass-test.js +28 -0
  17. package/dist/commands/show.d.ts +10 -0
  18. package/dist/commands/show.js +73 -0
  19. package/dist/commands/update.d.ts +16 -0
  20. package/dist/commands/update.js +78 -0
  21. package/dist/commands/validate.d.ts +8 -0
  22. package/dist/commands/validate.js +49 -0
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +1 -0
  25. package/dist/util/read-config.d.ts +2 -0
  26. package/dist/util/read-config.js +5 -0
  27. package/dist/util/read-roadmap.d.ts +2 -0
  28. package/dist/util/read-roadmap.js +5 -0
  29. package/dist/util/types.d.ts +66 -0
  30. package/dist/util/types.js +36 -0
  31. package/dist/util/update-task.d.ts +4 -0
  32. package/dist/util/update-task.js +16 -0
  33. package/dist/util/validate-task-id.d.ts +2 -0
  34. package/dist/util/validate-task-id.js +5 -0
  35. package/dist/util/validate-task.d.ts +4 -0
  36. package/dist/util/validate-task.js +17 -0
  37. package/dist/util/write-roadmap.d.ts +2 -0
  38. package/dist/util/write-roadmap.js +5 -0
  39. package/oclif.manifest.json +426 -0
  40. package/package.json +73 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Zachary Eggert
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,559 @@
1
+ # project-roadmap-tracking
2
+
3
+ CLI based project task tracking
4
+
5
+ [![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
6
+ [![Version](https://img.shields.io/npm/v/project-roadmap-tracking.svg)](https://npmjs.org/package/project-roadmap-tracking)
7
+ [![Downloads/week](https://img.shields.io/npm/dw/project-roadmap-tracking.svg)](https://npmjs.org/package/project-roadmap-tracking)
8
+
9
+ <!-- toc -->
10
+ * [project-roadmap-tracking](#project-roadmap-tracking)
11
+ * [Usage](#usage)
12
+ * [Commands](#commands)
13
+ <!-- tocstop -->
14
+
15
+ # Usage
16
+
17
+ <!-- usage -->
18
+ ```sh-session
19
+ $ npm install -g project-roadmap-tracking
20
+ $ prt COMMAND
21
+ running command...
22
+ $ prt (--version)
23
+ project-roadmap-tracking/0.1.0 darwin-arm64 node-v25.2.1
24
+ $ prt --help [COMMAND]
25
+ USAGE
26
+ $ prt COMMAND
27
+ ...
28
+ ```
29
+ <!-- usagestop -->
30
+
31
+ # Commands
32
+
33
+ <!-- commands -->
34
+ * [`prt add TITLE`](#prt-add-title)
35
+ * [`prt complete TASKID`](#prt-complete-taskid)
36
+ * [`prt help [COMMAND]`](#prt-help-command)
37
+ * [`prt init [FOLDER]`](#prt-init-folder)
38
+ * [`prt list`](#prt-list)
39
+ * [`prt pass-test TASKID`](#prt-pass-test-taskid)
40
+ * [`prt plugins`](#prt-plugins)
41
+ * [`prt plugins add PLUGIN`](#prt-plugins-add-plugin)
42
+ * [`prt plugins:inspect PLUGIN...`](#prt-pluginsinspect-plugin)
43
+ * [`prt plugins install PLUGIN`](#prt-plugins-install-plugin)
44
+ * [`prt plugins link PATH`](#prt-plugins-link-path)
45
+ * [`prt plugins remove [PLUGIN]`](#prt-plugins-remove-plugin)
46
+ * [`prt plugins reset`](#prt-plugins-reset)
47
+ * [`prt plugins uninstall [PLUGIN]`](#prt-plugins-uninstall-plugin)
48
+ * [`prt plugins unlink [PLUGIN]`](#prt-plugins-unlink-plugin)
49
+ * [`prt plugins update`](#prt-plugins-update)
50
+ * [`prt show TASK`](#prt-show-task)
51
+ * [`prt update TASKID`](#prt-update-taskid)
52
+ * [`prt validate`](#prt-validate)
53
+
54
+ ## `prt add TITLE`
55
+
56
+ add a new task to the roadmap
57
+
58
+ ```
59
+ USAGE
60
+ $ prt add TITLE -d <value> -t bug|feature|improvement|planning|research [-p high|medium|low] [-s
61
+ not-started|in-progress|completed] [-g <value>]
62
+
63
+ ARGUMENTS
64
+ TITLE title of the task to add
65
+
66
+ FLAGS
67
+ -d, --details=<value> (required) description of the task to add
68
+ -g, --tags=<value> comma-separated list of tags to add to the task
69
+ -p, --priority=<option> [default: medium] priority of the task to add
70
+ <options: high|medium|low>
71
+ -s, --status=<option> [default: not-started] status of the task to add
72
+ <options: not-started|in-progress|completed>
73
+ -t, --type=<option> (required) type of the task to add
74
+ <options: bug|feature|improvement|planning|research>
75
+
76
+ DESCRIPTION
77
+ add a new task to the roadmap
78
+
79
+ EXAMPLES
80
+ $ prt add
81
+ ```
82
+
83
+ _See code: [src/commands/add.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/add.ts)_
84
+
85
+ ## `prt complete TASKID`
86
+
87
+ Mark a task as completed
88
+
89
+ ```
90
+ USAGE
91
+ $ prt complete TASKID [-t]
92
+
93
+ ARGUMENTS
94
+ TASKID ID of the task to complete
95
+
96
+ FLAGS
97
+ -t, --tests mark task as passes-tests
98
+
99
+ DESCRIPTION
100
+ Mark a task as completed
101
+
102
+ EXAMPLES
103
+ $ prt complete F-001 --tests
104
+ ```
105
+
106
+ _See code: [src/commands/complete.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/complete.ts)_
107
+
108
+ ## `prt help [COMMAND]`
109
+
110
+ Display help for prt.
111
+
112
+ ```
113
+ USAGE
114
+ $ prt help [COMMAND...] [-n]
115
+
116
+ ARGUMENTS
117
+ [COMMAND...] Command to show help for.
118
+
119
+ FLAGS
120
+ -n, --nested-commands Include all nested commands in the output.
121
+
122
+ DESCRIPTION
123
+ Display help for prt.
124
+ ```
125
+
126
+ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.36/src/commands/help.ts)_
127
+
128
+ ## `prt init [FOLDER]`
129
+
130
+ initialize a new project roadmap (prt.json and prt.config.json)
131
+
132
+ ```
133
+ USAGE
134
+ $ prt init [FOLDER] [-d <value>] [-f] [-n <value>] [--withSampleTasks]
135
+
136
+ ARGUMENTS
137
+ [FOLDER] folder to initialize the project roadmap in
138
+
139
+ FLAGS
140
+ -d, --description=<value> description to print
141
+ -f, --force force initialization even if files already exist
142
+ -n, --name=<value> name to print
143
+ --withSampleTasks include sample tasks in the initialized roadmap
144
+
145
+ DESCRIPTION
146
+ initialize a new project roadmap (prt.json and prt.config.json)
147
+
148
+ EXAMPLES
149
+ $ prt init [path/to/directory]
150
+ ```
151
+
152
+ _See code: [src/commands/init.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/init.ts)_
153
+
154
+ ## `prt list`
155
+
156
+ list tasks in the project roadmap
157
+
158
+ ```
159
+ USAGE
160
+ $ prt list [-i] [-p high|medium|low|h|m|l] [-o dueDate|priority|createdAt] [-s
161
+ completed|in-progress|not-started]
162
+
163
+ FLAGS
164
+ -i, --incomplete filter tasks to show in-progress and not-started only
165
+ -o, --sort=<option> sort tasks by field (dueDate, priority, createdAt)
166
+ <options: dueDate|priority|createdAt>
167
+ -p, --priority=<option> filter tasks by priority (high, medium, low)
168
+ <options: high|medium|low|h|m|l>
169
+ -s, --status=<option> filter tasks by status (completed, in-progress, not-started)
170
+ <options: completed|in-progress|not-started>
171
+
172
+ DESCRIPTION
173
+ list tasks in the project roadmap
174
+
175
+ EXAMPLES
176
+ $ prt list -p=h --incomplete --sort=createdAt
177
+ ```
178
+
179
+ _See code: [src/commands/list.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/list.ts)_
180
+
181
+ ## `prt pass-test TASKID`
182
+
183
+ Mark a task as passes-tests
184
+
185
+ ```
186
+ USAGE
187
+ $ prt pass-test TASKID
188
+
189
+ ARGUMENTS
190
+ TASKID ID of the task to mark as passing tests
191
+
192
+ DESCRIPTION
193
+ Mark a task as passes-tests
194
+
195
+ EXAMPLES
196
+ $ prt pass-test F-001
197
+ ```
198
+
199
+ _See code: [src/commands/pass-test.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/pass-test.ts)_
200
+
201
+ ## `prt plugins`
202
+
203
+ List installed plugins.
204
+
205
+ ```
206
+ USAGE
207
+ $ prt plugins [--json] [--core]
208
+
209
+ FLAGS
210
+ --core Show core plugins.
211
+
212
+ GLOBAL FLAGS
213
+ --json Format output as json.
214
+
215
+ DESCRIPTION
216
+ List installed plugins.
217
+
218
+ EXAMPLES
219
+ $ prt plugins
220
+ ```
221
+
222
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/index.ts)_
223
+
224
+ ## `prt plugins add PLUGIN`
225
+
226
+ Installs a plugin into prt.
227
+
228
+ ```
229
+ USAGE
230
+ $ prt plugins add PLUGIN... [--json] [-f] [-h] [-s | -v]
231
+
232
+ ARGUMENTS
233
+ PLUGIN... Plugin to install.
234
+
235
+ FLAGS
236
+ -f, --force Force npm to fetch remote resources even if a local copy exists on disk.
237
+ -h, --help Show CLI help.
238
+ -s, --silent Silences npm output.
239
+ -v, --verbose Show verbose npm output.
240
+
241
+ GLOBAL FLAGS
242
+ --json Format output as json.
243
+
244
+ DESCRIPTION
245
+ Installs a plugin into prt.
246
+
247
+ Uses npm to install plugins.
248
+
249
+ Installation of a user-installed plugin will override a core plugin.
250
+
251
+ Use the PRT_NPM_LOG_LEVEL environment variable to set the npm loglevel.
252
+ Use the PRT_NPM_REGISTRY environment variable to set the npm registry.
253
+
254
+ ALIASES
255
+ $ prt plugins add
256
+
257
+ EXAMPLES
258
+ Install a plugin from npm registry.
259
+
260
+ $ prt plugins add myplugin
261
+
262
+ Install a plugin from a github url.
263
+
264
+ $ prt plugins add https://github.com/someuser/someplugin
265
+
266
+ Install a plugin from a github slug.
267
+
268
+ $ prt plugins add someuser/someplugin
269
+ ```
270
+
271
+ ## `prt plugins:inspect PLUGIN...`
272
+
273
+ Displays installation properties of a plugin.
274
+
275
+ ```
276
+ USAGE
277
+ $ prt plugins inspect PLUGIN...
278
+
279
+ ARGUMENTS
280
+ PLUGIN... [default: .] Plugin to inspect.
281
+
282
+ FLAGS
283
+ -h, --help Show CLI help.
284
+ -v, --verbose
285
+
286
+ GLOBAL FLAGS
287
+ --json Format output as json.
288
+
289
+ DESCRIPTION
290
+ Displays installation properties of a plugin.
291
+
292
+ EXAMPLES
293
+ $ prt plugins inspect myplugin
294
+ ```
295
+
296
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/inspect.ts)_
297
+
298
+ ## `prt plugins install PLUGIN`
299
+
300
+ Installs a plugin into prt.
301
+
302
+ ```
303
+ USAGE
304
+ $ prt plugins install PLUGIN... [--json] [-f] [-h] [-s | -v]
305
+
306
+ ARGUMENTS
307
+ PLUGIN... Plugin to install.
308
+
309
+ FLAGS
310
+ -f, --force Force npm to fetch remote resources even if a local copy exists on disk.
311
+ -h, --help Show CLI help.
312
+ -s, --silent Silences npm output.
313
+ -v, --verbose Show verbose npm output.
314
+
315
+ GLOBAL FLAGS
316
+ --json Format output as json.
317
+
318
+ DESCRIPTION
319
+ Installs a plugin into prt.
320
+
321
+ Uses npm to install plugins.
322
+
323
+ Installation of a user-installed plugin will override a core plugin.
324
+
325
+ Use the PRT_NPM_LOG_LEVEL environment variable to set the npm loglevel.
326
+ Use the PRT_NPM_REGISTRY environment variable to set the npm registry.
327
+
328
+ ALIASES
329
+ $ prt plugins add
330
+
331
+ EXAMPLES
332
+ Install a plugin from npm registry.
333
+
334
+ $ prt plugins install myplugin
335
+
336
+ Install a plugin from a github url.
337
+
338
+ $ prt plugins install https://github.com/someuser/someplugin
339
+
340
+ Install a plugin from a github slug.
341
+
342
+ $ prt plugins install someuser/someplugin
343
+ ```
344
+
345
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/install.ts)_
346
+
347
+ ## `prt plugins link PATH`
348
+
349
+ Links a plugin into the CLI for development.
350
+
351
+ ```
352
+ USAGE
353
+ $ prt plugins link PATH [-h] [--install] [-v]
354
+
355
+ ARGUMENTS
356
+ PATH [default: .] path to plugin
357
+
358
+ FLAGS
359
+ -h, --help Show CLI help.
360
+ -v, --verbose
361
+ --[no-]install Install dependencies after linking the plugin.
362
+
363
+ DESCRIPTION
364
+ Links a plugin into the CLI for development.
365
+
366
+ Installation of a linked plugin will override a user-installed or core plugin.
367
+
368
+ e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'
369
+ command will override the user-installed or core plugin implementation. This is useful for development work.
370
+
371
+
372
+ EXAMPLES
373
+ $ prt plugins link myplugin
374
+ ```
375
+
376
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/link.ts)_
377
+
378
+ ## `prt plugins remove [PLUGIN]`
379
+
380
+ Removes a plugin from the CLI.
381
+
382
+ ```
383
+ USAGE
384
+ $ prt plugins remove [PLUGIN...] [-h] [-v]
385
+
386
+ ARGUMENTS
387
+ [PLUGIN...] plugin to uninstall
388
+
389
+ FLAGS
390
+ -h, --help Show CLI help.
391
+ -v, --verbose
392
+
393
+ DESCRIPTION
394
+ Removes a plugin from the CLI.
395
+
396
+ ALIASES
397
+ $ prt plugins unlink
398
+ $ prt plugins remove
399
+
400
+ EXAMPLES
401
+ $ prt plugins remove myplugin
402
+ ```
403
+
404
+ ## `prt plugins reset`
405
+
406
+ Remove all user-installed and linked plugins.
407
+
408
+ ```
409
+ USAGE
410
+ $ prt plugins reset [--hard] [--reinstall]
411
+
412
+ FLAGS
413
+ --hard Delete node_modules and package manager related files in addition to uninstalling plugins.
414
+ --reinstall Reinstall all plugins after uninstalling.
415
+ ```
416
+
417
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/reset.ts)_
418
+
419
+ ## `prt plugins uninstall [PLUGIN]`
420
+
421
+ Removes a plugin from the CLI.
422
+
423
+ ```
424
+ USAGE
425
+ $ prt plugins uninstall [PLUGIN...] [-h] [-v]
426
+
427
+ ARGUMENTS
428
+ [PLUGIN...] plugin to uninstall
429
+
430
+ FLAGS
431
+ -h, --help Show CLI help.
432
+ -v, --verbose
433
+
434
+ DESCRIPTION
435
+ Removes a plugin from the CLI.
436
+
437
+ ALIASES
438
+ $ prt plugins unlink
439
+ $ prt plugins remove
440
+
441
+ EXAMPLES
442
+ $ prt plugins uninstall myplugin
443
+ ```
444
+
445
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/uninstall.ts)_
446
+
447
+ ## `prt plugins unlink [PLUGIN]`
448
+
449
+ Removes a plugin from the CLI.
450
+
451
+ ```
452
+ USAGE
453
+ $ prt plugins unlink [PLUGIN...] [-h] [-v]
454
+
455
+ ARGUMENTS
456
+ [PLUGIN...] plugin to uninstall
457
+
458
+ FLAGS
459
+ -h, --help Show CLI help.
460
+ -v, --verbose
461
+
462
+ DESCRIPTION
463
+ Removes a plugin from the CLI.
464
+
465
+ ALIASES
466
+ $ prt plugins unlink
467
+ $ prt plugins remove
468
+
469
+ EXAMPLES
470
+ $ prt plugins unlink myplugin
471
+ ```
472
+
473
+ ## `prt plugins update`
474
+
475
+ Update installed plugins.
476
+
477
+ ```
478
+ USAGE
479
+ $ prt plugins update [-h] [-v]
480
+
481
+ FLAGS
482
+ -h, --help Show CLI help.
483
+ -v, --verbose
484
+
485
+ DESCRIPTION
486
+ Update installed plugins.
487
+ ```
488
+
489
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.54/src/commands/plugins/update.ts)_
490
+
491
+ ## `prt show TASK`
492
+
493
+ show details of a specific task in the project roadmap
494
+
495
+ ```
496
+ USAGE
497
+ $ prt show TASK
498
+
499
+ ARGUMENTS
500
+ TASK task ID to show
501
+
502
+ DESCRIPTION
503
+ show details of a specific task in the project roadmap
504
+
505
+ EXAMPLES
506
+ $ prt show F-001
507
+ ```
508
+
509
+ _See code: [src/commands/show.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/show.ts)_
510
+
511
+ ## `prt update TASKID`
512
+
513
+ Update a task in place
514
+
515
+ ```
516
+ USAGE
517
+ $ prt update TASKID [--clear-notes] [-d <value>] [-n <value>] [-s completed|in-progress|not-started] [-t
518
+ true|false]
519
+
520
+ ARGUMENTS
521
+ TASKID ID of the task to update
522
+
523
+ FLAGS
524
+ -d, --deps=<value> update the dependencies of the task (comma-separated list of task IDs)
525
+ -n, --notes=<value> append notes to the task
526
+ -s, --status=<option> set the status of the task (completed, in-progress, not-started)
527
+ <options: completed|in-progress|not-started>
528
+ -t, --tested=<option> update whether the task passes tests
529
+ <options: true|false>
530
+ --clear-notes clear all notes from the task
531
+
532
+ DESCRIPTION
533
+ Update a task in place
534
+
535
+ EXAMPLES
536
+ $ prt update F-001 --status=completed --tested=true --notes="Fixed all bugs"
537
+
538
+ $ prt update F-002 --deps="F-001" --clear-notes
539
+ ```
540
+
541
+ _See code: [src/commands/update.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/update.ts)_
542
+
543
+ ## `prt validate`
544
+
545
+ describe the command here
546
+
547
+ ```
548
+ USAGE
549
+ $ prt validate
550
+
551
+ DESCRIPTION
552
+ describe the command here
553
+
554
+ EXAMPLES
555
+ $ prt validate
556
+ ```
557
+
558
+ _See code: [src/commands/validate.ts](https://github.com/ZacharyEggert/project-roadmap-tracking/blob/v0.1.0/src/commands/validate.ts)_
559
+ <!-- commandsstop -->
package/bin/dev.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
package/bin/dev.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning
2
+
3
+ import {execute} from '@oclif/core'
4
+
5
+ await execute({development: true, dir: import.meta.url})
package/bin/run.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node "%~dp0\run" %*
package/bin/run.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import {execute} from '@oclif/core'
4
+
5
+ await execute({dir: import.meta.url})
@@ -0,0 +1,16 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Add extends Command {
3
+ static args: {
4
+ title: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ details: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ priority: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ status: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ tags: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ type: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,76 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ import { readConfigFile } from '../util/read-config.js';
3
+ import { readRoadmapFile } from '../util/read-roadmap.js';
4
+ import { PRIORITY, STATUS, TASK_TYPE, TASK_TYPE_MAP } from '../util/types.js';
5
+ import { writeRoadmapFile } from '../util/write-roadmap.js';
6
+ export default class Add extends Command {
7
+ static args = {
8
+ title: Args.string({ description: 'title of the task to add', required: true }),
9
+ };
10
+ static description = 'add a new task to the roadmap';
11
+ static examples = ['<%= config.bin %> <%= command.id %>'];
12
+ static flags = {
13
+ // force: Flags.boolean({char: 'f'}),
14
+ // name: Flags.string({char: 'n', description: 'name to print'}),
15
+ details: Flags.string({ char: 'd', description: 'description of the task to add', required: true }),
16
+ priority: Flags.string({
17
+ char: 'p',
18
+ default: PRIORITY.Medium,
19
+ description: 'priority of the task to add',
20
+ options: [PRIORITY.High, PRIORITY.Medium, PRIORITY.Low],
21
+ required: false,
22
+ }),
23
+ status: Flags.string({
24
+ char: 's',
25
+ default: STATUS.NotStarted,
26
+ description: 'status of the task to add',
27
+ options: [STATUS.NotStarted, STATUS.InProgress, STATUS.Completed],
28
+ required: false,
29
+ }),
30
+ tags: Flags.string({
31
+ char: 'g',
32
+ description: 'comma-separated list of tags to add to the task',
33
+ required: false,
34
+ }),
35
+ type: Flags.string({
36
+ char: 't',
37
+ description: 'type of the task to add',
38
+ options: [TASK_TYPE.Bug, TASK_TYPE.Feature, TASK_TYPE.Improvement, TASK_TYPE.Planning, TASK_TYPE.Research],
39
+ required: true,
40
+ }),
41
+ };
42
+ async run() {
43
+ const { args, flags } = await this.parse(Add);
44
+ const config = await readConfigFile();
45
+ const roadmapFile = await readRoadmapFile(config.path);
46
+ const taskType = flags.type;
47
+ const existingTaskIDs = new Set(roadmapFile.tasks.filter((task) => task.type === taskType).map((task) => task.id));
48
+ let newIDNumber = 1;
49
+ let newTaskID;
50
+ while (true) {
51
+ const potentialID = `${TASK_TYPE_MAP.get(taskType)}-${String(newIDNumber).padStart(3, '0')}`;
52
+ if (!existingTaskIDs.has(potentialID)) {
53
+ newTaskID = potentialID;
54
+ break;
55
+ }
56
+ newIDNumber++;
57
+ }
58
+ const newTask = {
59
+ blocks: [],
60
+ createdAt: new Date().toISOString(),
61
+ 'depends-on': [],
62
+ details: flags.details,
63
+ id: newTaskID,
64
+ notes: '',
65
+ 'passes-tests': false,
66
+ priority: flags.priority,
67
+ status: flags.status,
68
+ tags: flags.tags ? flags.tags.split(',').map((tag) => tag.trim()) : [],
69
+ title: args.title,
70
+ type: taskType,
71
+ updatedAt: new Date().toISOString(),
72
+ };
73
+ roadmapFile.tasks.push(newTask);
74
+ await writeRoadmapFile(config.path, roadmapFile);
75
+ }
76
+ }
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Complete extends Command {
3
+ static args: {
4
+ taskID: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ tests: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }