"""Parche idempotente: registra el blueprint de estequiometria en app.py y anade
la tarjeta en templates/index.html. Ejecutar dentro de ~/apps/quimica/ del servidor.
"""
import os

DIR_BASE = os.path.dirname(os.path.abspath(__file__))
APP = os.path.join(DIR_BASE, "..", "app.py")
INDEX = os.path.join(DIR_BASE, "..", "templates", "index.html")


def aplicar_app():
    with open(APP, encoding="utf-8") as f:
        texto = f.read()
    if "estequiometria_cdt" in texto:
        print("app.py: ya registrado, omitiendo")
        return
    # Insertar import tras el import del blueprint de reacciones.
    marca = "from reacciones_cdt import bp as reacciones_bp"
    import_bloque = f"{marca}\nfrom estequiometria_cdt import bp as estequiometria_bp"
    texto = texto.replace(marca, import_bloque, 1)
    marca2 = "app.register_blueprint(reacciones_bp)"
    texto = texto.replace(marca2, f"{marca2}\napp.register_blueprint(estequiometria_bp)", 1)
    with open(APP, "w", encoding="utf-8") as f:
        f.write(texto)
    print("app.py: blueprint registrado")


def aplicar_index():
    with open(INDEX, encoding="utf-8") as f:
        texto = f.read()
    if "estequiometria" in texto:
        print("index.html: tarjeta ya presente, omitiendo")
        return
    ancla = '<div class="card proximamente">'
    tarjeta = (
        '<div class="card">\n'
        '<h2>Estequiometria (4.1.5-4.1.7)</h2>\n'
        '<p>Ley de conservacion, balanceo de ecuaciones por tanteo, '
        'relaciones estequiometricas mol-mol y masa-masa. '
        'Actividad a libro abierto.</p>\n'
        '<a class="btn" href="/quimica/estequiometria">Abrir actividad</a>\n'
        '</div>\n'
    )
    if ancla in texto:
        texto = texto.replace(ancla, tarjeta + ancla, 1)
    else:
        texto = texto.rstrip() + "\n" + tarjeta
    with open(INDEX, "w", encoding="utf-8") as f:
        f.write(texto)
    print("index.html: tarjeta anadida")


if __name__ == "__main__":
    aplicar_app()
    aplicar_index()