Traté de incluir tfenv en mi configuración de dotfiles y de la misma manera que lo hago con pyenv, rbenv, etc. Cargué esos contenedores de forma diferida, por lo que init
se ejecuta en la primera llamada, así es como se ve en el 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 $@
}
Esta función se genera automáticamente mediante el contenedor en https://github.com/z0rc/dotfiles/blob/master/zsh/rc.d/15_rbpynodlua_env.zsh#L5 -L16. También define el directorio *ENV_ROOT
para que esos envoltorios no creen dotdir de nivel superior en $HOME
(Nota al margen: la especificación de directorio base XDG tiene más de una década de antigüedad, pero algunas aplicaciones aún no lo hacen). no lo honro, vergüenza)
Así que traté de habilitar tfenv
aquí solo para descubrir que no maneja TFENV_ROOT
la misma manera que otros envoltorios. Otros envoltorios usan la carpeta *ENV_ROOT
para almacenar shims, complementos y caché. tfenv
literalmente lo usa como indicador de dónde está instalado, lo que no tiene mucho sentido ya que de todos modos esto se detecta automáticamente. Además, no hay un comando tfenv init
.
Agradezco que haya intentado simplificar la instalación, pero de la misma manera rompió el contrato de compatibilidad con otros envoltorios.
Además, no hay tfenv shell
para habilitar cierta versión de terraform para la sesión de shell actual.
Lo que es más importante, tfenv
no debe anular /usr/local/bin/terraform
ni entrar en conflicto con Terraform propiamente dicho, sino que, en su lugar, juegue con $PATH
como todo el mundo lo hace.
Tener estas características lo convertiría en una herramienta útil cuando se usa con algo como anyenv
.
Creé una rama que hace lo que hace rbenv init
(en una forma súper simple).
https://github.com/jalcine/tfenv/tree/add-init-comando
Déjame saber qué más debería ir allí.
Resuelto por #240
Comentario más útil
Lo que es más importante,
tfenv
no debe anular/usr/local/bin/terraform
ni entrar en conflicto con Terraform propiamente dicho, sino que, en su lugar, juegue con$PATH
como todo el mundo lo hace.