Files
plexus/tasks/cli.py

63 lines
1.9 KiB
Python

import argparse
from db import add_task, delete_task, init_db, list_tasks, update_task
def main():
init_db()
parser = argparse.ArgumentParser(description="Plexus Task Tracker")
subparsers = parser.add_subparsers(dest="command")
# Add task
add_parser = subparsers.add_parser("add", help="Add a new task")
add_parser.add_argument("title", help="Task title")
# List tasks
list_parser = subparsers.add_parser("list", help="List tasks")
list_parser.add_argument("--status", help="Filter by status")
# Update task
update_parser = subparsers.add_parser("update", help="Update task status")
update_parser.add_argument("id", type=int, help="Task ID")
update_parser.add_argument("status", help="New status")
# Done task
done_parser = subparsers.add_parser("done", help="Mark task as done")
done_parser.add_argument("id", type=int, help="Task ID")
# Delete task
delete_parser = subparsers.add_parser("delete", help="Delete a task")
delete_parser.add_argument("id", type=int, help="Task ID")
args = parser.parse_args()
if args.command == "add":
add_task(args.title)
print(f"Task added: {args.title}")
elif args.command == "list":
tasks = list_tasks(args.status)
print(f"{'ID':<5} {'Status':<15} {'Title'}")
print("-" * 40)
for t in tasks:
print(f"{t[0]:<5} {t[2]:<15} {t[1]}")
elif args.command == "update":
update_task(args.id, args.status)
print(f"Task {args.id} updated to {args.status}")
elif args.command == "done":
update_task(args.id, "done")
print(f"Task {args.id} marked as done")
elif args.command == "delete":
delete_task(args.id)
print(f"Task {args.id} deleted")
else:
parser.print_help()
if __name__ == "__main__":
main()