Conversation
Since 0.16 asdf ships as a Go binary instead of a tree of shell scripts,
so there is no repository to clone, nothing to source, and `asdf update`
refuses to upgrade the binary it ships as. asdf:setup now reads the
installed version from `asdf version` and, when it differs from
:asdf_version, downloads the release archive built for the architecture
`uname -m` reports and untars its single `asdf` executable into
#{asdf_path}/bin. Linux is the only supported target.
asdf:map_bins exports ASDF_DATA_DIR, which the binary no longer derives
from its own location: without it, a custom :asdf_path would hold the
binary while the plugins, the installs and the shims went to ~/.asdf,
where the PATH does not point.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problème
La gem installe asdf en clonant le dépôt puis en faisant
git checkout v0.15.0.Depuis la 0.16, asdf est réécrit en Go et distribué comme un binaire
pré-compilé : il n'y a plus de dépôt à cloner, plus de
asdf.shà sourcer, etasdf updaterefuse maintenant de mettre à jour le binaire (« Upgrading asdfvia asdf update is no longer supported »). La version par défaut restait donc
bloquée sur la 0.15.0, la dernière version « shell ».
Ce qui change
asdf_versionvaut désormais0.20.0, la dernière version publiée.asdf:setupinstalle et met à jour asdf tout seul à chaque déploiement : illit la version installée avec
asdf version, la compare àasdf_version, etsi elles diffèrent télécharge l'archive de la release GitHub et en extrait le
binaire dans
#{asdf_path}/bin, en une commande et sans fichier temporaire(
curl -fsSL <url> | tar -xzf - -C <path>/bin asdf).uname -msur le serveur cible (x86_64→amd64,aarch64→arm64). Seul Linux est supporté, et le README le dit maintenant.asdf:map_binsexporteASDF_DATA_DIR. Le binaire Go ne déduit plus sonrépertoire de données de son propre emplacement : sans cette variable, un
asdf_pathpersonnalisé installerait ses plugins dans~/.asdfalors que lePATH pointe ailleurs.
Capistrano::Asdf::Releaseporte les deux seules décisions quiméritent un test : l'URL de l'archive et la lecture du numéro de version.
asdf_repositorydisparaît, plus rien n'est cloné. Leversion.txtécrit à côté du clone disparaît aussi : la version installée estlue depuis le binaire, donc une mise à jour est détectée même si asdf a été
installé à la main.
Comment ça a été testé
bundle exec rake: 9 tests, 12 assertions, 0 échec, standard compris.test/capistrano/test_release.rb(nouveau) : URL amd64 et arm64, refus d'unearchitecture pour laquelle asdf ne publie rien, lecture de
0.20.0dansv0.20.0 (revision 150aaf0), et sortie vide qui donnenil.test_map_bins.rb: un test de plus vérifie queASDF_DATA_DIR="$HOME/.asdf"est bien exporté devant chaque commande distante.
asdf:setupa besoin d'un vrai serveur. Lescommandes distantes n'ont pas été jouées sur staging, c'est à vérifier au
premier déploiement.
À savoir pour la relecture
#{asdf_path}contient aujourd'hui le clone git de la0.15. Le premier déploiement écrit le binaire Go par-dessus
bin/asdfetlaisse le reste en place :
plugins/,installs/,shims/etdownloads/sont conservés, il n'y a donc aucun outil à réinstaller. Les résidus du clone
(
.git,lib/,asdf.sh,completions/,version.txt) deviennent inutileset peuvent être supprimés à la main ; la gem n'y touche pas.
#{asdf_path}/bin, qui n'est plus unrépertoire d'asdf depuis la 0.16, pour que
asdf_pathreste le seul réglage àconnaître et que le PATH construit par
map_binsne change pas.asdf:uninstalllanceasdf uninstall <outil>sans version alors que la commande exige<name> <version>: la tâche est inopérante, avant comme après cette PR. Etle README documente une tâche
asdf:upload_wrapperqui n'existe pas dans lecode. Dites-moi si vous voulez un ticket pour l'un ou l'autre.
🤖 Generated with Claude Code