#!/usr/bin/python3.12
import os
import re
import sys
import subprocess
from ruamel.yaml import YAML

syspath = sys.path
sys.path = [path for path in sys.path if
            not (path == os.getcwd() or path == ".")]

yaml = YAML(typ='safe')

mytestdata = yaml.load("""\
test:
  environment:
    contents:
      packages:
        - busybox
  pipeline:
    - uses: py/pip-check
""")

for f in sys.argv[1:]:
    yaml2 = YAML()
    with open(f, "rb") as fp:
        content = fp.read()
    y = yaml2.load(content)
    #if "data" in y:
    #    if "items" in y["data"][0]:
    #        v = y["data"][0]["items"].get(3.1)
    #        if v is not None:
    #            y["data"][0]["items"]["3.10"] = v
    #            del y["data"][0]["items"][3.1]

    ops = []
    pyver = False
    if "data" in y:
        n = -1
        for i, d in enumerate(y["data"]):
            if d["name"] == "py-versions":
                if "313" in d["items"].values():
                    break
                pyver = True
                n = i
                break

        if n >= 0:
            y["data"][n]["items"][3.13] = "313"
            ops.append("py-versions")


    if pyver and "subpackages" in y:
        n = -1
        found = False
        bname = "${{vars.pypi-package}}"
        for i, sp in enumerate(y["subpackages"]):
            if sp.get("name").startswith("py3-supported-"):
                print("got it: %s" % (sp.get("name")))
                if "dependencies" not in sp:
                    sp["dependencies"] = {}
                if "runtime" in sp["dependencies"]:
                    bnmatch = re.match("py3.[0-9]+-(.*)$", sp["dependencies"]["runtime"][0])
                    if bnmatch:
                        bname = bnmatch.groups()[0]

                n = i
                break

        deps = ["py%s-%s" % (v, bname) for v in ["3.10", "3.11", "3.12", "3.13"]]
        supsub = {
            "name": "py3-supported-${{vars.pypi-package}}",
            "description" : "meta package providing ${{vars.pypi-package}} for supported python versions.",
            "dependencies": {"runtime": deps}
        }
        if n > 0:
            y["subpackages"][n]["dependencies"]["runtime"] = deps
            y["subpackages"][n]["dependencies"]["runtime"].sort()
            ops.append("update-supported")
        else:
            y["subpackages"].append(supsub)
            ops.append("new-supported")
    
    print("%s: %s" % (f, ops))
    if len(ops):
        with open(f, "w") as fp:
            yaml2.dump(y, fp)
    
        subprocess.check_output(["yam", f])
        subprocess.check_output(["wolfictl", "bump", f])