Format apt updates as old -> new
This commit is contained in:
@@ -22,7 +22,29 @@ async def list_updates() -> str:
|
|||||||
if pm == "apt":
|
if pm == "apt":
|
||||||
await run_cmd(["sudo", "apt", "update"], timeout=300)
|
await run_cmd(["sudo", "apt", "update"], timeout=300)
|
||||||
rc, out = await run_cmd(["apt", "list", "--upgradable"], timeout=120)
|
rc, out = await run_cmd(["apt", "list", "--upgradable"], timeout=120)
|
||||||
return f"📦 Updates (apt)\n```{out}```" if rc == 0 else f"❌ apt list failed\n```{out}```"
|
if rc != 0:
|
||||||
|
return f"❌ apt list failed\n```{out}```"
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
for line in out.splitlines():
|
||||||
|
if not line or line.startswith("Listing..."):
|
||||||
|
continue
|
||||||
|
# Format: name/version ... [upgradable from: old]
|
||||||
|
name_ver = line.split(" ", 1)[0]
|
||||||
|
if "/" not in name_ver:
|
||||||
|
continue
|
||||||
|
name, new_ver = name_ver.split("/", 1)
|
||||||
|
old_ver = None
|
||||||
|
marker = "upgradable from: "
|
||||||
|
if marker in line:
|
||||||
|
old_ver = line.split(marker, 1)[1].rstrip("]").strip()
|
||||||
|
if old_ver:
|
||||||
|
lines.append(f"{name}: {old_ver} -> {new_ver}")
|
||||||
|
else:
|
||||||
|
lines.append(f"{name}: -> {new_ver}")
|
||||||
|
|
||||||
|
body = "\n".join(lines) if lines else "No updates"
|
||||||
|
return f"📦 Updates (apt)\n```{body}```"
|
||||||
|
|
||||||
if pm == "dnf":
|
if pm == "dnf":
|
||||||
rc, out = await run_cmd(["sudo", "dnf", "check-update"], timeout=300)
|
rc, out = await run_cmd(["sudo", "dnf", "check-update"], timeout=300)
|
||||||
|
|||||||
Reference in New Issue
Block a user