#!/usr/bin/env python3

from pathlib import Path
import json

ROOT = Path(__file__).parent
SRC = ROOT / "src" / "pw.js"
DIST = ROOT / "dist"

DEFAULT_BASE_URL = "http://localhost:8000/"

TARGETS = {
    "local": "https://cx22.localhost/cygnus_x1/labs/KSN-01/",
    "public": "https://cx22.ns-x.net/cygnus_x1/labs/KSN-01/",
}

source = SRC.read_text()


def configure_source(base_url):
    return source.replace(
        f'const PW_BASE_URL = "{DEFAULT_BASE_URL}";',
        f'const PW_BASE_URL = "{base_url}";'
    )


def bookmarklet(js):
    # Projection, not minification.
    return "javascript:" + js.replace("\n", " ")


def build(name, base_url):
    out = DIST / name
    ext = out / "extension"

    out.mkdir(parents=True, exist_ok=True)
    ext.mkdir(parents=True, exist_ok=True)

    js = configure_source(base_url)

    (out / "bookmarklet.txt").write_text(
        bookmarklet(js) + "\n"
    )

    (ext / "pw.js").write_text(js)

    manifest = {
        "manifest_version": 3,
        "name": "KSN-01",
        "version": "0.0.1",
        "description": "Personal overlays for the web.",
        "content_scripts": [
            {
                "matches": ["<all_urls>"],
                "js": ["pw.js"],
            }
        ],
    }

    (ext / "manifest.json").write_text(
        json.dumps(manifest, indent=2) + "\n"
    )


for name, base_url in TARGETS.items():
    build(name, base_url)
