Files
m5rcode-ubuntu/utils/updater.py
m5rcel { Marcel } aff3745589 Update updater.py
2025-10-09 20:25:42 +02:00

53 lines
2.0 KiB
Python

import os
import requests
from utils.downloader import download_and_extract
from pathlib import Path
# URLs for raw version and zipped repo
VERSION_URL = "https://raw.githubusercontent.com/m4rcel-lol/m5rcode-ubuntu/main/version.txt"
REPO_ZIP_URL = "https://github.com/m4rcel-lol/m5rcode-ubuntu/archive/refs/heads/main.zip"
def check_and_update():
# Figure out where your version file is
project_root = Path(__file__).resolve().parents[2]
local_version_file = project_root / "version.txt"
try:
# 1. Get remote version number (plain text!)
remote_ver = requests.get(VERSION_URL, timeout=6).text.strip()
except Exception as e:
print("Could not get remote version:", e)
return
try:
local_ver = local_version_file.read_text().strip()
except Exception:
local_ver = None
if remote_ver != local_ver:
print(f"Updating: {local_ver or 'unknown'}{remote_ver}")
# 2. Download/extract ZIP to temp location
import tempfile
with tempfile.TemporaryDirectory() as tmpdir:
download_and_extract(REPO_ZIP_URL, tmpdir)
# Find the extracted subfolder (GitHub zips always contain one top-level folder)
zipped_root = Path(tmpdir) / "m5rcode-main"
if not zipped_root.exists():
zipped_root = next(Path(tmpdir).iterdir())
# 3. Copy updated files over (here simply overwrite existing files)
for item in zipped_root.iterdir():
dest = project_root / item.name
if item.is_dir():
# Recursively copy dir
import shutil
if dest.exists():
shutil.rmtree(dest)
shutil.copytree(item, dest)
else:
dest.write_bytes(item.read_bytes())
# 4. Write new local version
local_version_file.write_text(remote_ver)
print("Update complete!")
else:
print("Already up to date.")