asdf¶
Veraltete asdf-Tool-Versionen erkennen und die entfernen, die nicht mehr verwendet werden. Für jedes installierte asdf-Plugin wird die Version behalten, die asdf aktuell auflöst; jede andere installierte Version wird zum Entfernungs-Kandidaten. So lässt sich eine Maschine, auf der sich viele alte Runtimes angesammelt haben, wieder auf das zurechtstutzen, was sie tatsächlich ausführt.
Siehe Referenzen → Gemeinsamer Vertrag für
die Konventionen zu USER_WORKING_DIR, Pin-Strategie und Override-Syntax,
die modulübergreifend gelten.
Voraussetzungen¶
asdfimPATH. Das Modul ist gegen asdfv0.19(die Go-Neufassung) geschrieben, woasdf list <plugin>die aktive Version mit*markiert.- Eine gefüllte
~/.tool-versions(oder das überASDF_RESOLVE_DIRbenannte Verzeichnis), damit der Task erkennt, welche Version aktiv ist. Plugins ohne aktive Version werden standardmäßig übersprungen — sieheASDF_KEEP_UNPINNED.
Tasks¶
| Task | Beschreibung |
|---|---|
asdf:prune -- [apply] [plugin...] |
Pro Plugin veraltete Versionen melden. Läuft standardmäßig als Dry-Run; mit apply wird für jeden Kandidaten asdf uninstall ausgeführt. Optionale Plugin-Namen schränken den Scan ein. |
Pro Plugin wird die Version behalten, die asdf in ASDF_RESOLVE_DIR auflöst
(das * aus asdf list, also der globale ~/.tool-versions-Pin); jede
andere installierte Version ist ein Kandidat. Der Task entfernt nie etwas,
solange apply nicht übergeben wird — ohne apply gibt er nur aus, was er
entfernen würde.
Plugins ohne aktive Version werden übersprungen, sodass ein ungepinntes Tool
nie versehentlich komplett gelöscht wird. ASDF_KEEP_UNPINNED auf false
setzen, um stattdessen jede installierte Version eines ungepinnten Plugins
als Kandidat zu behandeln.
Variablen¶
| Variable | Default | Zweck |
|---|---|---|
ASDF_RESOLVE_DIR |
$HOME |
Verzeichnis, gegen das die aktive Version aufgelöst wird. Der Default sieht die globale ~/.tool-versions und ignoriert eine projektlokale .tool-versions. Auf {{.USER_WORKING_DIR}} setzen, um einen projektlokalen Pin zu berücksichtigen. |
ASDF_KEEP_UNPINNED |
true |
Plugins ohne aktive Version unangetastet lassen. Auf false setzen, um auch ungepinnte Plugins zu prunen (gefährlich — dann ist jede installierte Version ein Kandidat). |
Beispiel¶
version: '3'
vars:
TASK_COLLECTION_BASE: https://raw.githubusercontent.com/nolte/taskfiles/main/src
includes:
asdf: "{{.TASK_COLLECTION_BASE}}/taskfile-include-asdf.yaml"
Anschließend von überall:
# Veraltete Versionen über alle Plugins melden (Dry-Run — entfernt nichts).
task asdf:prune
# Jede veraltete Version tatsächlich deinstallieren.
task asdf:prune -- apply
# Den Scan auf ein oder mehrere Plugins einschränken.
task asdf:prune -- golang
task asdf:prune -- apply golang kubectl
Fehlerbehebung¶
asdf is not installed. Dieasdf-CLI liegt nicht imPATH. Sie installieren (oder über nolte/workstation provisionieren) und erneut versuchen.- Ein Plugin, das gestutzt werden sollte, wird übersprungen. Es hat keine
aktive Version in der aufgelösten
.tool-versions. Pinne sie, oder setzeASDF_KEEP_UNPINNED: "false", um es dennoch zu prunen. - Ein Kandidat ließ sich nicht entfernen.
asdf uninstallist für diese Version fehlgeschlagen (etwa weil ein laufender Prozess sie noch hält). Der Task meldet den Fehler, macht weiter und beendet sich am Ende mit einem Fehlercode ungleich null. Erneut ausführen oder von Hand deinstallieren. - Die falschen Versionen wurden behalten. Die aktive Version wird gegen
ASDF_RESOLVE_DIRaufgelöst (Default$HOME); eine projektlokale.tool-versionswird ignoriert, sofernASDF_RESOLVE_DIRnicht auf dieses Verzeichnis zeigt.