"""
Helpers for development and CI scripts.
"""
from __future__ import annotations

import subprocess


def get_url_hash(hash_type, name, url) -> dict[str, str]:
    """
    Get the nix hash of the given URL.

    :returns: Dictionary of arguments suitable to pass to :nix:`pkgs.fetchzip`
        or a function derived from it (such as :nix:`pkgs.fetchFromGitLab`)
        to specify the hash.
    """
    output = subprocess.run(
        [
            "nix-prefetch-url",
            "--type",
            hash_type,
            "--unpack",
            "--name",
            name,
            url,
        ],
        capture_output=True,
        check=True,
        encoding="utf-8",
    )

    return {
        "outputHashAlgo": hash_type,
        "outputHash": output.stdout.strip(),
    }