#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p python3Packages.python -p python3Packages.requests

import json
import os

import requests

github_token = os.environ.get("GITHUB_TOKEN")

disallowed_repos = [
    "nix-community/dream2nix-auto-test",
    "nix-community/image-spec",
    "nix-community/nix",
    "nix-community/nixpkgs",
    "nix-community/nsncd",
    "nix-community/rkwifibt",
    "NixOS/nixops-dashboard",  # empty repo causes an error
]


def all_for_org(org):

    resp = {}

    next_url = "https://api.github.com/orgs/{}/repos".format(org)
    while next_url is not None:

        if github_token is not None:
            headers = {"Authorization": f"token {github_token}"}
            repo_resp = requests.get(next_url, headers=headers)
        else:
            repo_resp = requests.get(next_url)

        if "next" in repo_resp.links:
            next_url = repo_resp.links["next"]["url"]
        else:
            next_url = None

        repos = repo_resp.json()

        resp.update(
            {
                "{}-{}".format(org, repo["name"]): {
                    "url": repo["clone_url"],
                }
                for repo in repos
                if repo["full_name"] not in disallowed_repos
                if repo["archived"] is False
            }
        )

    return resp


repos = {**all_for_org("NixOS"), **all_for_org("nix-community")}

print(
    json.dumps(
        {
            "max-concurrent-indexers": 1,
            "dbpath": "/var/lib/hound/data",
            "repos": repos,
            "vcs-config": {"git": {"detect-ref": True}},
        },
        indent=2,
        sort_keys=True,
    )
)