#!/usr/bin/env python3
"""Lista de tareas sencilla: un ejemplo práctico de vibe coding.

Uso:
  python3 vibe_tareas.py
  python3 vibe_tareas.py agregar "Preparar café"
  python3 vibe_tareas.py listar
  python3 vibe_tareas.py completar 1
  python3 vibe_tareas.py borrar 1
"""

import json
import sys
from pathlib import Path

ARCHIVO = Path(__file__).with_name("tareas.json")


def cargar_tareas():
    """Lee las tareas guardadas; si aún no hay archivo, empieza vacío."""
    if not ARCHIVO.exists():
        return []
    try:
        return json.loads(ARCHIVO.read_text(encoding="utf-8"))
    except (json.JSONDecodeError, OSError):
        print("No pude leer tareas.json; empezaré con una lista vacía.")
        return []


def guardar_tareas(tareas):
    ARCHIVO.write_text(
        json.dumps(tareas, ensure_ascii=False, indent=2), encoding="utf-8"
    )


def mostrar_ayuda():
    print("""Lista de tareas — comandos:
  agregar <texto>    Añade una tarea
  listar             Muestra las tareas
  completar <número> Marca una tarea como completada
  borrar <número>    Elimina una tarea
  ayuda              Muestra esta ayuda
""")


def main():
    tareas = cargar_tareas()
    comando = sys.argv[1].lower() if len(sys.argv) > 1 else "listar"

    if comando == "agregar":
        texto = " ".join(sys.argv[2:]).strip()
        if not texto:
            print('Escribe una tarea. Ejemplo: python3 vibe_tareas.py agregar "Leer"')
            return
        tareas.append({"texto": texto, "hecha": False})
        guardar_tareas(tareas)
        print(f"Añadida: {texto}")

    elif comando == "listar":
        if not tareas:
            print("Todavía no hay tareas. Añade una con el comando agregar.")
            return
        for numero, tarea in enumerate(tareas, start=1):
            marca = "✓" if tarea["hecha"] else " "
            print(f"{numero}. [{marca}] {tarea['texto']}")

    elif comando in ("completar", "borrar"):
        if len(sys.argv) < 3 or not sys.argv[2].isdigit():
            print(f"Indica el número. Ejemplo: python3 vibe_tareas.py {comando} 1")
            return
        indice = int(sys.argv[2]) - 1
        if not 0 <= indice < len(tareas):
            print("Ese número no corresponde a ninguna tarea.")
            return
        if comando == "completar":
            tareas[indice]["hecha"] = True
            guardar_tareas(tareas)
            print(f"Completada: {tareas[indice]['texto']}")
        else:
            eliminada = tareas.pop(indice)
            guardar_tareas(tareas)
            print(f"Eliminada: {eliminada['texto']}")

    elif comando == "ayuda":
        mostrar_ayuda()
    else:
        print(f"No conozco el comando: {comando}")
        mostrar_ayuda()


if __name__ == "__main__":
    main()
