From 5899d3baa64fadf91607b81c80ffb596c70cc5bf Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Thu, 24 Apr 2025 09:26:01 +0200 Subject: [PATCH] Initial autobuilder work --- .gitignore | 3 +++ autobuilder.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 3 files changed, 50 insertions(+) create mode 100644 .gitignore create mode 100644 autobuilder.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b835332 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/venv +/.env +/work \ No newline at end of file diff --git a/autobuilder.py b/autobuilder.py new file mode 100644 index 0000000..bc6b418 --- /dev/null +++ b/autobuilder.py @@ -0,0 +1,46 @@ +import gitea as gt +import os +import base64 +import subprocess +import shutil + +class BadEncodingException(Exception): + pass + +class CloneException(Exception): + pass + +TOKEN = os.environ['TOKEN'] + +gitea = gt.Gitea("https://gitea.seeseepuff.be", TOKEN) +org = gt.Organization.request(gitea, "archlinux") +workDir = "./work/" + +def main() -> None: + repositories = org.get_repositories() + for repository in repositories: + print(repository.get_full_name()) + + try: + # Check if the repository has a PKGBUILD file. + # If it does, clone it. + metadata = gitea.requests_get(f"/repos/{repository.owner.username}/{repository.name}/contents/PKGBUILD") + # Empty repositories will just return an empty dict. + if metadata == {}: + continue + + clone_repository(repository) + except gt.NotFoundException: + print("PKGBUILD not found") + continue + +def clone_repository(repository: gt.Repository) -> None: + process = subprocess.Popen(["git", "clone", repository.clone_url, f"{workDir}{repository.name}"]) + result = process.wait() + if result != 0: + raise CloneException(f"Failed to clone {repository.name}") + +if __name__ == "__main__": + shutil.rmtree(workDir, ignore_errors=True) + os.makedirs(workDir, exist_ok=True) + main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..407939a --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +py-gitea \ No newline at end of file