airgap/src/update.py

30 lines
997 B
Python
Raw Normal View History

#!/usr/bin/env python3
from requests import Session
from fileinput import FileInput
target = "Containerfile"
source = "https://codeberg.org/stagex/stagex/raw/branch/main/digests/"
stages = ["core","user","bootstrap"]
digests = {}
for stage in stages:
response = Session().get(f"{source}{stage}.txt")
for line in response.iter_lines():
if not line:
continue
digest,name = line.decode("utf-8").split(" ")
digests[name] = digest
with FileInput(target, inplace=True, backup='.bak') as f:
for line in f:
if line.startswith("FROM stagex/"):
name = line.split("/")[1].split(":")[0]
tag = line.split(":")[1].split("@")[0]
if name not in digests:
for stage in stages:
if f"{stage}-{name}" in digests:
name = f"{stage}-{name}"
print(f"FROM stagex/{name}:{tag}@sha256:{digests[name]} AS {name}")
else:
print(line,end='')