fix: replace checkbox with numbered list + text input for package removal

This commit is contained in:
2026-08-27 21:06:09 +02:00
parent ea57d0eed2
commit 8c13b307d6
+15 -8
View File
@@ -346,17 +346,24 @@ def select_packages() -> list[str]:
seen.add(p)
deduped.append(p)
# let user deselect individual packages
# let user remove individual packages
if deduped:
console.print(f"\n [dim]{len(deduped)} packages from groups. Deselect any:[/]")
deselected = questionary.checkbox(
"Uncheck packages to remove (space=remove, enter=done):",
choices=deduped,
console.print(f"\n [dim]{len(deduped)} packages selected:[/]")
for i, p in enumerate(deduped, 1):
console.print(f" [cyan]{i:3}.[/] {p}")
console.print()
remove_input = questionary.text(
"Remove packages? Enter numbers comma-separated (or empty to keep all):",
default="",
).ask()
if deselected is None:
if remove_input is None:
sys.exit(0)
deselected_set = set(deselected)
deduped = [p for p in deduped if p not in deselected_set]
if remove_input.strip():
try:
remove_idx = {int(x.strip()) - 1 for x in remove_input.split(",")}
deduped = [p for i, p in enumerate(deduped) if i not in remove_idx]
except ValueError:
console.print(" [yellow]Invalid input, keeping all packages.[/]")
# custom packages
console.print()