Я попытался включить tfenv в свою конфигурацию dotfiles, и так же, как я делаю с pyenv, rbenv и т. д. Я загружаю эти оболочки отложенно, поэтому init
выполняется при первом вызове, вот как это выглядит в оболочке:
% 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 $@
}
Эта функция генерируется автоматически с помощью оболочки по адресу https://github.com/z0rc/dotfiles/blob/master/zsh/rc.d/15_rbpynodlua_env.zsh#L5 -L16. Также он определяет каталог *ENV_ROOT
, поэтому эти оболочки не будут создавать каталог точек верхнего уровня в $HOME
(примечание: спецификация базового каталога XDG существует более десяти лет, но некоторые приложения все еще не честь, позор)
Поэтому я попытался включить здесь tfenv
просто для того, чтобы обнаружить, что он не обрабатывает TFENV_ROOT
так же, как другие оболочки. Другие оболочки используют папку *ENV_ROOT
для хранения прокладок, плагинов и кеша. tfenv
буквально использует его как индикатор того, где он установлен, что не имеет особого смысла, поскольку это все равно определяется автоматически. Также отсутствует команда tfenv init
.
Я ценю, что вы пытались упростить установку, но таким же образом вы нарушили договор совместимости с другими оболочками.
Кроме того, нет tfenv shell
для включения определенной версии terraform для текущего сеанса оболочки.
Самое главное, tfenv
не должен переопределять /usr/local/bin/terraform
или конфликтовать с собственно Terraform, а вместо этого играть с $PATH
, как это делают все остальные.
Наличие этих функций сделало бы его полезным инструментом при использовании с чем-то вроде anyenv
.
Я сделал ветку, которая делает то, что делает rbenv init
(в очень простой форме).
https://github.com/jalcine/tfenv/tree/add-init-команда
Дайте мне знать, что еще должно быть там.
Решено # 240
Самый полезный комментарий
Самое главное,
tfenv
не должен переопределять/usr/local/bin/terraform
или конфликтовать с собственно Terraform, а вместо этого играть с$PATH
, как это делают все остальные.