Ich habe versucht, tfenv in meine Dotfiles-Konfiguration aufzunehmen, und genauso mache ich es mit pyenv, rbenv usw. Ich lade diese Wrapper lazy, also wird init
beim ersten Aufruf ausgeführt, so sieht es in der Shell aus:
% type -f rbenv
rbenv () {
unset -f rbenv
export RBENV_ROOT=$XDG_DATA_HOME/rbenv
PATH=$DOTFILES/rbenv/rbenv/bin:$PATH
eval "$(command rbenv init -)"
rbenv $@
}
Diese Funktion wird automatisch mit Wrapper unter https://github.com/z0rc/dotfiles/blob/master/zsh/rc.d/15_rbpynodlua_env.zsh#L5 -L16 generiert. Außerdem definiert es *ENV_ROOT
Verzeichnis, sodass diese Wrapper kein dotdir der obersten Ebene in $HOME
erstellen (Randbemerkung: XDG Base Dir Spec ist mehr als ein Jahrzehnt alt, aber einige Anwendungen tun es immer noch nicht nicht ehren, schade)
Also habe ich versucht, tfenv
hier zu aktivieren, nur um festzustellen, dass es TFENV_ROOT
nicht so handhabt wie andere Wrapper. Andere Wrapper verwenden den Ordner *ENV_ROOT
zum Speichern von Shims, Plugins und Cache. tfenv
verwendet es buchstäblich als Indikator, wo es installiert ist, was nicht viel Sinn macht, da dies sowieso automatisch erkannt wird. Außerdem gibt es keinen tfenv init
-Befehl.
Ich schätze, dass Sie versucht haben, die Installation zu vereinfachen, aber auf die gleiche Weise haben Sie den Kompatibilitätsvertrag mit anderen Wrappern gebrochen.
Darüber hinaus gibt es kein tfenv shell
, um bestimmte Versionen von Terraform für die aktuelle Shell-Sitzung zu aktivieren.
Am wichtigsten ist, dass tfenv
nicht /usr/local/bin/terraform
überschreibt oder mit Terraform in Konflikt gerät, sondern stattdessen mit $PATH
spielt, so wie es alle anderen tun.
Mit diesen Funktionen wäre es ein nützliches Werkzeug, wenn es mit etwas wie anyenv
verwendet wird.
Ich habe einen Zweig erstellt, der das tut, was rbenv init
tut (in einer supereinfachen Form).
https://github.com/jalcine/tfenv/tree/add-init-command
Sag Bescheid, was da noch rein soll.
Gelöst durch #240
Hilfreichster Kommentar
Am wichtigsten ist, dass
tfenv
nicht/usr/local/bin/terraform
überschreibt oder mit Terraform in Konflikt gerät, sondern stattdessen mit$PATH
spielt, so wie es alle anderen tun.