我尝试在我的 dotfiles 配置中包含 tfenv,就像我对 pyenv、rbenv 等所做的那样。我延迟加载这些包装器,所以在第一次调用时执行init
,这里是它在 shell 中的样子:
% 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
dir,因此这些包装器不会在$HOME
中创建顶级 dotdir(旁注:XDG Base Dir Spec 已有十多年的历史,但某些应用程序仍然没有'不尊重它,耻辱)
所以我尝试在这里启用tfenv
只是为了发现它不像其他包装器那样处理TFENV_ROOT
。 其他包装器使用*ENV_ROOT
文件夹来存储垫片、插件和缓存。 tfenv
从字面上使用它作为安装位置的指示器,这没有多大意义,因为无论如何都会自动检测到它。 也没有tfenv init
命令。
我感谢您尝试简化安装,但同样您违反了与其他包装器的兼容性合同。
此外,没有tfenv shell
可以为当前 shell 会话启用特定版本的 terraform。
最重要的是, tfenv
不应覆盖/usr/local/bin/terraform
或与正确的 Terraform 冲突,而是像其他人一样使用$PATH
。
当与anyenv
之类的东西一起使用时,拥有这些功能将使它成为一个有用的工具。
我做了一个分支,做rbenv init
所做的事情(以超级简单的形式)。
https://github.com/jalcine/tfenv/tree/add-init-command
让我知道还有什么应该进去的。
由#240 解决
最有用的评论
最重要的是,
tfenv
不应覆盖/usr/local/bin/terraform
或与正确的 Terraform 冲突,而是像其他人一样使用$PATH
。