#!/usr/bin/env python3
import json
import os
import sys
import urllib.request

SCHUTZFILE = "Schutzfile"


def images_main_commit_id():
    token = os.environ.get("GITHUB_TOKEN")
    req = urllib.request.Request("https://api.github.com/repos/osbuild/images/commits/main")
    req.add_header("Accept", "application/vnd.github+json")
    if token:
        # this API request doesn't necessarily require a token, but let's use it if we have one
        req.add_header("Authorization", f"Bearer {token}")

    with urllib.request.urlopen(req, timeout=30) as resp:
        body = resp.read()

    data = json.loads(body)
    return data["sha"]


def update_images_ref(new):
    with open(SCHUTZFILE, encoding="utf-8") as schutzfile:
        data = json.load(schutzfile)

    data.setdefault("global", {}).setdefault("dependencies", {}).setdefault("images", {})["ref"] = new

    with open(SCHUTZFILE, encoding="utf-8", mode="w") as schutzfile:
        json.dump(data, schutzfile, indent="  ")


def main():
    main_id = images_main_commit_id()
    print(f"osbuild/images main commit ID: {main_id}")
    print("Updating Schutzfile")
    update_images_ref(main_id)


if __name__ == "__main__":
    main()
