infra/services/hound/update-hound.py
2022-12-31 07:27:07 +01:00

67 lines
1.6 KiB
Python
Executable file

#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p python3Packages.python -p python3Packages.requests
import json
import requests
disallowed_repos = [
"NixOS/nixops-dashboard", # empty repo causes an error
]
allowed_forks = [
"nix-community/acpi_call",
"nix-community/bundix",
"nix-community/luarocks-nix",
"nix-community/nix-doom-emacs",
"nix-community/nix-straight.el",
"nix-community/travis-build",
"nix-community/vagrant-nixos-plugin",
"NixOS/calamares-nixos-extensions",
]
def all_for_org(org):
resp = {}
next_url = "https://api.github.com/orgs/{}/repos".format(org)
while next_url is not None:
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
if repo["fork"] is False or repo["full_name"] in allowed_forks
}
)
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=4,
sort_keys=True,
)
)