#!/usr/bin/env python3.10 import argparse import requests def main(gitea_api_token, gh_api_token): gitea = requests.Session() gitea.headers.update({"Authorization": f"token {gitea_api_token}"}) gitea.headers.update({"Accept": "application/json"}) gitea.headers.update({"Content-Type": "application/json"}) not_done = True page = 1 gitea_repos = [] while not_done: url = f"https://git.fcuny.net/api/v1/user/repos?page={page}&limit=10" res = gitea.get( url, timeout=5, ) res.raise_for_status() repos = res.json() if len(repos) == 0: not_done = False else: page = page + 1 for repo in repos: name = repo.get("name") gitea_repos.append(name) github = requests.Session() github.headers.update({"Authorization": f"token {gh_api_token}"}) github.headers.update({"Accept": "application/vnd.github.v3+json"}) not_done = True page = 1 github_repos = [] while not_done: url = f"https://api.github.com/user/repos?page={page}&type=all" res = github.get( url, timeout=5, ) res.raise_for_status() repos = res.json() if len(repos) == 0: not_done = False else: page = page + 1 for repo in repos: name = repo.get("name") if ( repo.get("owner").get("login") == "fcuny" and repo.get("private") == True ): github_repos.append(name) for repo in github_repos: if repo in gitea_repos: url = f"https://api.github.com/repos/fcuny/{repo}" print(f"deleting {url}") res = github.delete( url, timeout=5, ) res.raise_for_status() if __name__ == "__main__": argp = argparse.ArgumentParser() argp.add_argument("-t", "--gt-file", nargs=1, type=argparse.FileType("r")) argp.add_argument("-T", "--gh-file", nargs=1, type=argparse.FileType("r")) args = argp.parse_args() gitea_api_token = args.gt_file[0].readline().strip() github_api_token = args.gh_file[0].readline().strip() main(gitea_api_token, github_api_token)