Blob Blame History Raw
#!/usr/bin/python3
"""
Download packages via dnf
"""


import json
import sys


SCHEMA = """
"additionalProperties": true
"""


def main(options, sources, secrets):
    repos = options.get("repos", {})
    repo_secrets = secrets.get("repos", {})

    reply = []
    for checksum in sources:
        try:
            source_repo = repos[checksum]
            source_repo_secrets = repo_secrets.get(checksum, {})
        except KeyError:
            json.dump({"error": f"source unknown: {checksum}"}, sys.stdout)
            return 1

        repo = {"checksum": checksum}

        if "baseurl" in source_repo:
            repo["baseurl"] = source_repo["baseurl"]
        elif "mirrorlist" in source_repo:
            repo["mirrorlist"] = source_repo["mirrorlist"]
        elif "metalink" in source_repo:
            repo["metalink"] = source_repo["metalink"]
        else:
            json.dump({"error": f"repo {checksum} is missing baseurl, mirrorlist, or metalink key"}, sys.stdout)

        if "sslcacert" in source_repo:
            repo["sslcacert"] = source_repo["sslcacert"]

        if "gpgkey" in source_repo:
            repo["gpgkey"] = source_repo["gpgkey"]

        if "sslclientcert" in source_repo_secrets:
            repo["sslclientcert"] = source_repo_secrets["sslclientcert"]

        if "sslclientkey" in source_repo_secrets:
            repo["sslclientkey"] = source_repo_secrets["sslclientkey"]

        reply.append(repo)

    json.dump(reply, sys.stdout)
    return 0


if __name__ == '__main__':
    args = json.load(sys.stdin)
    r = main(args["options"], args["checksums"], args.get("secrets", {}))
    sys.exit(r)