diff --git a/bin/app-json.py b/bin/app-json.py index 33ca45a..166bea6 100755 --- a/bin/app-json.py +++ b/bin/app-json.py @@ -8,7 +8,7 @@ import argparse from json import dump -from os import chdir, getcwd, listdir +from os import chdir, environ, getcwd, listdir from os.path import basename from pathlib import Path from re import findall, search @@ -31,6 +31,21 @@ parser = argparse.ArgumentParser(description="Generate a new apps.json") parser.add_argument("--output", type=Path, default=f"{getcwd()}/apps.json") +def skopeo_login(): + """Log into the docker registry to avoid rate limits.""" + user = environ.get("SKOPEO_USER") + password = environ.get("SKOPEO_PASSWORD") + registry = environ.get("SKOPEO_REGISTRY", "docker.io") + + if not user or not password: + log.info("Failed to log in via Skopeo due to missing env vars") + return + + login_cmd = f"skopeo login {registry} -u {user} -p {password}" + output = _run_cmd(login_cmd, shell=True) + log.info(f"Skopeo login attempt: {output}") + + def get_published_apps_json(): """Retrieve already published apps json.""" url = "https://apps.coopcloud.tech" @@ -202,6 +217,8 @@ def main(): """Run the script.""" args = parser.parse_args() + skopeo_login() + repos_json = get_repos_json() clone_all_apps(repos_json)