Harden apt update parsing
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user