Revert tool to last version, bump internal version to 1.1.5
This commit is contained in:
121
check_new_version.py
Normal file
121
check_new_version.py
Normal 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()
|
||||
Reference in New Issue
Block a user