import { CLICommand } from "../cli/CLICommand.js"; import { parseTodoFile } from "../file.js"; export class IssueShowCommand extends CLICommand { name = "show "; help = "Show details for a single issue"; description = "Print all fields for one issue"; addArguments(yargs) { return yargs.positional("id", { type: "number", demandOption: true }); } async execute(args) { const todo = await parseTodoFile(); const issue = todo.issues.find(i => i.id === args.id); if (!issue) { console.error(`Issue #${args.id} not found`); return 1; } console.log(`ID: ${issue.id}`); console.log(`Type: ${issue.type}`); console.log(`Title: ${issue.title}`); console.log(`Status: ${issue.status}`); console.log(`Priority: ${issue.priority}`); console.log(`Created: ${issue.created}`); if (issue.module) console.log(`Module: ${issue.module}`); if (issue.dueStart) console.log(`DueStart: ${issue.dueStart}`); if (issue.dueEnd) console.log(`DueEnd: ${issue.dueEnd}`); const rels = Object.entries(issue.relationships) .map(([k, v]) => `${k}:${v.join(" ")}`) .join(", "); console.log(`Relationships: ${rels}`); console.log(`Description: ${issue.description}`); if (issue.body) { console.log(); console.log(issue.body); } return 0; } }