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 re
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..."):
continue
# Format: name/repo new_ver arch [upgradable from: old]
parts = line.split()
if len(parts) < 2:
m = re.match(r"^(\S+)\s+(\S+)\s", line)
if not m:
continue
name_repo = parts[0]
new_ver = parts[1]
if "/" not in name_repo:
name = name_repo
else:
name = name_repo.split("/", 1)[0]
name_repo, new_ver = m.group(1), m.group(2)
name = name_repo.split("/", 1)[0] if "/" in name_repo else name_repo
old_ver = None
marker = "upgradable from: "
if marker in line:
old_ver = line.split(marker, 1)[1].rstrip("]").strip()
m_old = re.search(r"upgradable from:\s*([^\]]+)", line)
if m_old:
old_ver = m_old.group(1).strip()
if old_ver:
lines.append(f"{name}: {old_ver} -> {new_ver}")
else: