From 7482362af1d01cc02828abd45b1222fa643d1f80 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Thu, 17 Jun 2021 21:40:58 +0200 Subject: [PATCH] Support logging in via Skopeo See https://git.autonomic.zone/coop-cloud/auto-apps-json/issues/1. --- bin/app-json.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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)