#!/usr/bin/env python
# source: https://github.com/etu/nixconfig/blob/ba47d577c8bfb4a1c06927c34ece34118f4a0460/modules/graphical/firefox/generate.py

from concurrent.futures import ThreadPoolExecutor
import json
import requests

EXTENSIONS = sorted(
    [
        "darkreader",
        "firenvim",
        "keepassxc-browser",
        "simple-tab-groups",
    ]
)


def index_ext(ext: str):
    # print(f"Indexing {ext}...")

    resp = requests.get(f"https://addons.mozilla.org/api/v5/addons/addon/{ext}/").json()
    rel = resp["current_version"]

    if not rel["file"]["hash"].startswith("sha256:"):
        raise ValueError("Unhandled hash type")

    return {
        "pname": ext,
        "version": rel["version"],
        "addonId": resp["guid"],
        "url": rel["file"]["url"],
        "sha256": rel["file"]["hash"],
    }


if __name__ == "__main__":
    # outfile = os.path.dirname(os.path.realpath(__file__)) + "/extensions.json"

    with ThreadPoolExecutor() as e:
        extensions = {ext: e.submit(index_ext, ext) for ext in EXTENSIONS}
        extensions = {k: v.result() for k, v in extensions.items()}

    # with open(outfile, "w") as f:
    print(json.dumps(extensions, indent=2))