Harden apt update parsing

This commit is contained in:
2026-02-07 23:14:51 +03:00
parent 6f8838b5f8
commit e3a977a2ec

View File

@@ -1,4 +1,5 @@
import os import os
import re
from services.runner import run_cmd from services.runner import run_cmd
@@ -30,19 +31,16 @@ async def list_updates() -> tuple[str, list[str]]:
if not line or line.startswith("Listing..."): if not line or line.startswith("Listing..."):
continue continue
# Format: name/repo new_ver arch [upgradable from: old] # Format: name/repo new_ver arch [upgradable from: old]
parts = line.split() m = re.match(r"^(\S+)\s+(\S+)\s", line)
if len(parts) < 2: if not m:
continue continue
name_repo = parts[0] name_repo, new_ver = m.group(1), m.group(2)
new_ver = parts[1] name = name_repo.split("/", 1)[0] if "/" in name_repo else name_repo
if "/" not in name_repo:
name = name_repo
else:
name = name_repo.split("/", 1)[0]
old_ver = None old_ver = None
marker = "upgradable from: " m_old = re.search(r"upgradable from:\s*([^\]]+)", line)
if marker in line: if m_old:
old_ver = line.split(marker, 1)[1].rstrip("]").strip() old_ver = m_old.group(1).strip()
if old_ver: if old_ver:
lines.append(f"{name}: {old_ver} -> {new_ver}") lines.append(f"{name}: {old_ver} -> {new_ver}")
else: else: