"""Tiny command-line front end for the demo task app. Run it: python cli.py add "write the lesson" python cli.py list python cli.py count State is kept in tasks.json next to this file. Same minimal app from Modules 1 and 2, with a `count` command bolted on. """ import json import sys from pathlib import Path from tasks import Task, TaskList STATE = Path(__file__).parent / "tasks.json" def load() -> TaskList: if not STATE.exists(): return TaskList() raw = json.loads(STATE.read_text()) return TaskList(tasks=[Task(**t) for t in raw]) def save(tlist: TaskList) -> None: STATE.write_text(json.dumps([t.__dict__ for t in tlist.tasks], indent=2)) def main(argv: list[str]) -> int: tlist = load() if not argv: print("usage: python cli.py [add