ドットファイル構成にtfenvを含めようとしましたが、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
dirを定義しているため、これらのラッパーは$HOME
にトップレベルのdotdirを作成しません(補足:XDG Base Dir Specは10年以上前のものですが、一部のアプリケーションはまだ作成していません。それを尊重しなさい、恥)
そこで、ここでtfenv
を有効にして、他のラッパーと同じようにTFENV_ROOT
を処理しないことを確認しました。 他のラッパーは、 *ENV_ROOT
フォルダーを使用して、シム、プラグイン、およびキャッシュを格納します。 tfenv
は文字通り、インストールされている場所のインジケーターとして使用しますが、これはとにかく自動的に検出されるため、あまり意味がありません。 また、 tfenv init
コマンドはありません。
インストールを簡素化しようとしたことを感謝しますが、同じように他のラッパーとの互換性契約を破りました。
さらに、現在のシェルセッションで特定のバージョンのテラフォームを有効にするためのtfenv shell
はありません。
最も重要なことは、 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
で遊んでください。