#!/usr/bin/env node // mime-todo/bin/main.ts import { parseTodoFile } from "../lib/file" async function main() { const [, , cmd, ...args] = process.argv const todo = await parseTodoFile() switch (cmd) { case "issues": for (const issue of todo.issues) { console.log(`#${issue.id} [${issue.type}] (${issue.status}) ${issue.title}`) } break case "sprints": for (const sprint of todo.sprints) { console.log(`${sprint.name}: ${sprint.start}..${sprint.end}`) } break case "issues-in-sprint": { const name = args.join(" ") const sprint = todo.sprints.find(s => s.name === name) if (!sprint) { console.error(`Sprint not found: ${name}`) process.exit(1) } const { start, end } = sprint for (const issue of todo.issues) { const ds = issue.dueStart ?? issue.dueEnd const de = issue.dueEnd ?? issue.dueStart if (!ds || !de) continue if (ds <= end && de >= start) { console.log(`#${issue.id} [${issue.type}] (${issue.status}) ${issue.title}`) } } break } default: console.log(`Usage: todo list todo sprints todo issues-in-sprint `) } } main().catch(err => { console.error(err) process.exit(1) })