Blob Blame History Raw
#!/usr/bin/python3

import argparse
import json
import re
import sys


def main():
    parser = argparse.ArgumentParser()
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument(
        "-P", "--provides", action="store_const", const="provides", dest="action"
    )
    group.add_argument(
        "-R", "--requires", action="store_const", const="requires", dest="action"
    )
    args = parser.parse_args()

    files = sys.stdin.read().splitlines()

    for f in files:
        with open(f, "r") as fobj:
            info = json.load(fobj)["collection_info"]
            if args.action == "provides":
                print(
                    f"ansible-collection({info['namespace']}.{info['name']}) = {info['version']}"
                )
            if args.action == "requires":
                print("(ansible >= 2.9.0 with ansible < 2.10.0)")
                for dep, req in info.get("dependencies", {}).items():
                    print(f"ansible-collection({dep})", end="")
                    if req == "*":
                        print()
                        continue
                    m = re.match(r"^>=(\d+\.\d+\.\d+)$", req)
                    if m:
                        print(f" >= {m.group(1)}")
                        continue
                    raise NotImplementedError(
                        "Generation of dependencies different than '*' or '>=' is not supported yet"
                    )


if __name__ == "__main__":
    main()