Revert tool to last version, bump internal version to 1.1.5

This commit is contained in:
2026-04-08 13:52:30 +02:00
parent 0338fd6524
commit 5e7a6643ea
4 changed files with 843 additions and 0 deletions

121
check_new_version.py Normal file
View File

@@ -0,0 +1,121 @@
import argparse
import configparser
import json
import sys
import urllib.request
from pathlib import Path
INI_FILE = Path("latestversion.ini")
PYTHON_API = "https://endoflife.date/api/v1/products/python"
CAESIUM_API = "https://api.github.com/repos/Lymphatus/caesium-clt/tags"
EXIT_NO_UPDATE = 0
EXIT_UPDATE_AVAILABLE = 10
EXIT_ERROR = 20
def fetch_json(url):
with urllib.request.urlopen(url, timeout=15) as r:
return json.loads(r.read().decode("utf-8"))
def load_ini():
cfg = configparser.ConfigParser()
cfg.read(INI_FILE, encoding="utf-8")
return cfg
def save_ini(cfg):
with open(INI_FILE, "w", encoding="utf-8") as f:
cfg.write(f)
def check_python(cfg, result):
used = cfg["DEFAULT"].get("python_used_version", "").strip()
major_minor = ".".join(used.split(".")[:2])
data = fetch_json(PYTHON_API)
releases = data.get("result", {}).get("releases", [])
for rel in releases:
if rel.get("name") != major_minor:
continue
latest = rel.get("latest", {}).get("name", "")
is_maintained = rel.get("isMaintained", True)
cfg["DEFAULT"]["python_latest_version"] = latest
if used != latest:
result["updates"].append({
"tool": "python",
"used": used,
"latest": latest,
"maintained": is_maintained,
"url": (
f"https://www.python.org/ftp/python/{latest}/"
f"python-{latest}-embed-amd64.zip"
)
})
def check_caesium(cfg, result):
used = cfg["DEFAULT"].get("caesiumclt_used_version", "").strip()
tags = fetch_json(CAESIUM_API)
latest = tags[0]["name"]
cfg["DEFAULT"]["caesiumclt_latest_version"] = latest
if used != latest:
result["updates"].append({
"tool": "caesiumclt",
"used": used,
"latest": latest,
"maintained": True,
"url": (
f"https://github.com/Lymphatus/caesium-clt/releases/download/{latest}/"
f"caesiumclt-{latest}-x86_64-pc-windows-msvc.zip"
)
})
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--yes", action="store_true")
parser.add_argument("--json", action="store_true")
args = parser.parse_args()
cfg = load_ini()
result = {"updates": []}
try:
check_python(cfg, result)
check_caesium(cfg, result)
except Exception as e:
print(f"ERROR: {e}")
sys.exit(EXIT_ERROR)
save_ini(cfg)
if args.json:
print(json.dumps(result, indent=2))
else:
for u in result["updates"]:
print(
f"{u['tool'].capitalize()}: aktuell genutzt {u['used']}, "
f"neu {u['latest']}, download?"
)
print(f"{u['tool'].upper()}_DOWNLOAD={u['url']}")
if not u["maintained"]:
print(
f"WARNING: Achtung Version {u['latest']} "
"wird nicht mehr gewartet!"
)
sys.exit(EXIT_UPDATE_AVAILABLE if result["updates"] else EXIT_NO_UPDATE)
if __name__ == "__main__":
main()