28 lines
700 B
JavaScript
28 lines
700 B
JavaScript
#!/usr/bin/env node
|
|||
|
|
import { load, save, add, complete, remove, format } from "./todo.js";
|
||
|
|
|
||
|
|
const FILE = process.env.TODO_FILE ?? "todos.json";
|
||
|
|
const [cmd, ...args] = process.argv.slice(2);
|
||
|
|
let todos = load(FILE);
|
||
|
|
|
||
|
|
switch (cmd) {
|
||
|
|
case "add":
|
||
|
|
todos = add(todos, args.join(" "));
|
||
|
|
break;
|
||
|
|
case "done":
|
||
|
|
todos = complete(todos, Number(args[0]));
|
||
|
|
break;
|
||
|
|
case "rm":
|
||
|
|
todos = remove(todos, Number(args[0]));
|
||
|
|
break;
|
||
|
|
case "ls":
|
||
|
|
case undefined:
|
||
|
|
console.log(format(todos));
|
||
|
|
process.exit(0);
|
||
|
|
default:
|
||
|
|
console.error(`Unknown command: ${cmd}\nUsage: todo [ls | add <text> | done <id> | rm <id>]`);
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
save(FILE, todos);
|
||
|
|
console.log(format(todos));
|