diff --git a/services/hound/update-hound.py b/services/hound/update-hound.py deleted file mode 100755 index 6bcb567..0000000 --- a/services/hound/update-hound.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/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, - ) -) diff --git a/shell.nix b/shell.nix index 2a41db0..6b0e1af 100644 --- a/shell.nix +++ b/shell.nix @@ -12,6 +12,7 @@ mkShellNoCC { p: [ p.deploykit p.invoke + p.requests ] )) rsync diff --git a/tasks.py b/tasks.py index dbea384..568b8ec 100644 --- a/tasks.py +++ b/tasks.py @@ -101,8 +101,69 @@ def update_hound_repos(c): """ Update list of repos for hound search """ - os.chdir("services/hound") - c.run("./update-hound.py > hound.json") + + def all_for_org(org): + 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 + ] + + 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")} + + with open("services/hound/hound.json", "w") as f: + f.write( + json.dumps( + { + "max-concurrent-indexers": 1, + "dbpath": "/var/lib/hound/data", + "repos": repos, + "vcs-config": {"git": {"detect-ref": True}}, + }, + indent=2, + sort_keys=True, + ) + ) + f.write("\n") @task