#!/usr/bin/env python3
import os
import traceback


def ensure_folder(path):
    if path:
        os.makedirs(path, exist_ok=True)


def main():
    app_root = os.path.dirname(os.path.abspath(__file__))
    db_path = os.environ.get("VANLOCALUK_DB", os.path.join(app_root, "vanlocaluk.db"))
    private_uploads = os.environ.get("VANLOCALUK_PRIVATE_UPLOADS", os.path.join(app_root, "private_uploads"))
    backup_dir = os.environ.get("VANLOCALUK_BACKUP_DIR", os.path.join(app_root, "backups"))
    tmp_dir = os.path.join(app_root, "tmp")
    uploads_dir = os.path.join(app_root, "uploads")
    subproofs_dir = os.path.join(uploads_dir, "subscription_proofs")
    mediaproofs_dir = os.path.join(uploads_dir, "media_proofs")

    ensure_folder(os.path.dirname(db_path))
    ensure_folder(private_uploads)
    ensure_folder(backup_dir)
    ensure_folder(tmp_dir)
    ensure_folder(subproofs_dir)
    ensure_folder(mediaproofs_dir)

    if not os.path.exists(db_path):
        bundled_db = os.path.join(app_root, "vanlocaluk.db")
        if os.path.exists(bundled_db) and os.path.abspath(bundled_db) != os.path.abspath(db_path):
            with open(bundled_db, "rb") as src, open(db_path, "wb") as dst:
                dst.write(src.read())

    import app

    app.ensure_initialized()

    print("VanLocalUK initialized successfully.")
    print(f"App root: {app_root}")
    print(f"Database: {app.DB_PATH}")
    print(f"Private uploads: {private_uploads}")
    print(f"Backups: {backup_dir}")


if __name__ == "__main__":
    try:
        main()
    except Exception:
        traceback.print_exc()
        raise
