diff --git a/completions/asdf.bash b/completions/asdf.bash index f828e9db..f3ad87ff 100644 --- a/completions/asdf.bash +++ b/completions/asdf.bash @@ -39,7 +39,7 @@ _asdf() { COMPREPLY=($(compgen -W "$available_plugins" -- "$cur")) ;; install | list | list-all | help) - if [[ "$plugins" == *"$prev"* ]]; then + if [[ " $plugins " == *" $prev "* ]]; then local versions versions=$(asdf list-all "$prev" 2>/dev/null) # shellcheck disable=SC2207 @@ -54,9 +54,10 @@ _asdf() { COMPREPLY=($(compgen -W "--head" -- "$cur")) ;; uninstall | where | reshim) - if [[ "$plugins" == *"$prev"* ]]; then + if [[ " $plugins " == *" $prev "* ]]; then local versions - versions=$(asdf list "$prev" 2>/dev/null) + # The first two columns are either blank or contain the "current" marker. + versions=$(asdf list "$prev" 2>/dev/null | colrm 1 2) # shellcheck disable=SC2207 COMPREPLY=($(compgen -W "$versions" -- "$cur")) else @@ -65,9 +66,10 @@ _asdf() { fi ;; local | global | shell) - if [[ "$plugins" == *"$prev"* ]]; then + if [[ " $plugins " == *" $prev "* ]]; then local versions - versions=$(asdf list "$prev" 2>/dev/null) + # The first two columns are either blank or contain the "current" marker. + versions=$(asdf list "$prev" 2>/dev/null | colrm 1 2) versions+=" system" # shellcheck disable=SC2207 COMPREPLY=($(compgen -W "$versions" -- "$cur")) diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index fb6ca4a5..ef49d533 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -364,7 +364,7 @@ export ASDF_DIR="/opt/asdf-vm" `asdf` scripts need to be sourced **after** you have set your `$PATH` and **after** you have sourced your framework (oh-my-zsh etc). ::: warning -On macOS, starting a Bash or Zsh shell automatically calls a utility called `path_helper`. `path_helper` can rearrange items in `PATH` (and `MANPATH`), causing inconsistent behavior for tools that require specific ordering. To workaround this, `asdf` on macOS defaults to forcily adding its `PATH`-entries to the front (taking highest priority). This is controllable with the `ASDF_FORCE_PREPEND` variable. +On macOS, starting a Bash or Zsh shell automatically calls a utility called `path_helper`. `path_helper` can rearrange items in `PATH` (and `MANPATH`), causing inconsistent behavior for tools that require specific ordering. To workaround this, `asdf` on macOS defaults to forcibly adding its `PATH`-entries to the front (taking highest priority). This is controllable with the `ASDF_FORCE_PREPEND` variable. ::: Restart your shell so that `PATH` changes take effect. Opening a new terminal tab will usually do it. diff --git a/docs/ja-jp/guide/getting-started.md b/docs/ja-jp/guide/getting-started.md index 7d87ff3b..4819f4dc 100644 --- a/docs/ja-jp/guide/getting-started.md +++ b/docs/ja-jp/guide/getting-started.md @@ -11,7 +11,7 @@ ## 1. 依存関係のインストール -asdfの動作には`git`および`curl`が必要です。以下の表は、 _あなたが使用している_ パッケージマネージャで実行するコマンドの _一部例_ です(some might automatically install these tools in later steps)。 +asdfの動作には`git`および`curl`が必要です。以下の表は、 _あなたが使用している_ パッケージマネージャで実行するコマンドの _一部例_ です(いくつかのツールは、後の手順で自動的にインストールされます)。 | OS | パッケージマネージャ | コマンド | | ----- | -------------------- | ---------------------------------- | @@ -34,8 +34,9 @@ asdfの動作には`git`および`curl`が必要です。以下の表は、 _あ + ```shell -git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1 +git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0 ``` @@ -299,7 +300,7 @@ echo -e "\n. \"$(brew --prefix asdf)/libexec/asdf.ps1\"" >> ~/.config/powershell 下記コマンドで、`~/.config/nushell/config.nu`に`asdf.nu`を追加します: ```shell -"\n$env.ASDF_NU_DIR = ($env.HOME | path join '.asdf')\n source " + ($env.HOME | path join '.asdf/asdf.nu') | save --append $nu.config-path +"\n$env.ASDF_DIR = ($env.HOME | path join '.asdf')\n source " + ($env.HOME | path join '.asdf/asdf.nu') | save --append $nu.config-path ``` コマンド補完は自動的に設定されます。 @@ -310,7 +311,7 @@ echo -e "\n. \"$(brew --prefix asdf)/libexec/asdf.ps1\"" >> ~/.config/powershell 下記コマンドで、`~/.config/nushell/config.nu`に`asdf.nu`を追加します: ```shell -"\n$env.ASDF_NU_DIR = (brew --prefix asdf | str trim | into string | path join 'libexec')\n source " + (brew --prefix asdf | into string | path join 'libexec/asdf.nu') | save --append $nu.config-path +"\n$env.ASDF_DIR = (brew --prefix asdf | str trim | into string | path join 'libexec')\n source " + (brew --prefix asdf | str trim | into string | path join 'libexec/asdf.nu') | save --append $nu.config-path ``` コマンド補完は自動的に設定されます。 @@ -321,7 +322,7 @@ echo -e "\n. \"$(brew --prefix asdf)/libexec/asdf.ps1\"" >> ~/.config/powershell 下記コマンドで、`~/.config/nushell/config.nu`に`asdf.nu`を追加します: ```shell -"\n$env.ASDF_NU_DIR = '/opt/asdf-vm/'\n source /opt/asdf-vm/asdf.nu" | save --append $nu.config-path +"\n$env.ASDF_DIR = '/opt/asdf-vm/'\n source /opt/asdf-vm/asdf.nu" | save --append $nu.config-path ``` コマンド補完は自動的に設定されます。 @@ -363,7 +364,7 @@ export ASDF_DIR="/opt/asdf-vm" `asdf`のスクリプトは、`$PATH`を設定した**あと**、かつ、使用中のフレームワーク(oh-my-zsh など)を呼び出した**あと**に記述する必要があります。 ::: warning 警告 -macOSでは、BasgまたはZSHシェルを起動すると、自動的に`path_helper`というユーティリティが呼び出されます。`path_helper`は`PATH`(および`MANPATH`)内の項目の順番を並び替えることができるため、特定の順序を必要とするツールの動作に、一貫性が無くなってしまいます。これを回避するため、macOSで`asdf`を利用するときは、強制的に`PATH`エントリの先頭に追加する(優先度を一番高くする)ようにしてください。これは、`ASDF_FORCE_PREPEND`環境変数で制御できます。 +macOSでは、BashまたはZSHシェルを起動すると、自動的に`path_helper`というユーティリティが呼び出されます。`path_helper`は`PATH`(および`MANPATH`)内の項目の順番を並び替えることができるため、特定の順序を必要とするツールの動作に、一貫性が無くなってしまいます。これを回避するため、macOSで`asdf`を利用するときは、強制的に`PATH`エントリの先頭に追加する(優先度を一番高くする)ようにしてください。これは、`ASDF_FORCE_PREPEND`環境変数で制御できます。 ::: `PATH`の変更を反映するために、シェルを再起動してください。たいていの場合、ターミナルのタブを新たに開けばOKです。 diff --git a/docs/ja-jp/manage/configuration.md b/docs/ja-jp/manage/configuration.md index 89c02976..e3af4f3b 100644 --- a/docs/ja-jp/manage/configuration.md +++ b/docs/ja-jp/manage/configuration.md @@ -152,6 +152,31 @@ asdfプラグインのショートネームリポジトリの同期を無効化 備考: `ASDF_CONCURRENCY`環境変数が設定されている場合はそちらが優先されます。 +### プラグインフック + +下記のタイミングで、カスタムコードを実行することができます: + +- プラグインのインストール、Shim再生成、更新および削除をする際の前後 +- プラグインコマンドの実行前後 + +例えば、`foo`というプラグインがインストールされていて、`bar`という実行可能ファイルが提供されている場合、以下のようなフックを使うことで、一番最初にカスタムコードを実行することができます: + +```text +pre_foo_bar = echo Executing with args: $@ +``` + +以下のパターンがサポートされています: + +- `pre__` +- `pre_asdf_download_` +- `{pre,post}_asdf_{install,reshim,uninstall}_` + - `$1`: フルバージョン +- `{pre,post}_asdf_plugin_{add,update,remove,reshim}` + - `$1`: プラグイン名 +- `{pre,post}_asdf_plugin_{add,update,remove}_` + +どのようなコマンドの前後にどのようなコマンドフックを実行すべきかについての詳細は、[プラグインの作成](../plugins/create.md)をご覧ください。 + ## 環境変数 環境変数の設定値は、お使いのシステムやシェルによって異なります。デフォルトロケーションは、インストールした場所や方法(Gitクローン、Homebrew、AUR)によって異なります。 diff --git a/docs/ja-jp/plugins/create.md b/docs/ja-jp/plugins/create.md index e0d4705c..f2c0ac95 100644 --- a/docs/ja-jp/plugins/create.md +++ b/docs/ja-jp/plugins/create.md @@ -814,7 +814,7 @@ asdf plugin test [--asdf-tool-version ] [--a デフォルトは、`asdf latest `です。 - オプションで`[--asdf-plugin-gitref ]`を指定すると、 そのコミット/ブランチ/タグでプラグイン自体をチェックアウトします。 - これは、プラグインのCIにおいて、プルリクエストをテストする際に便利です。 + これは、プラグインのCIにおいて、プルリクエストをテストする際に便利です。デフォルトは、プラグインリポジトリのデフォルトブランチとなります。 - オプションの`[test_command...]`パラメータは、インストールしたツールが正しく動作するかを確認するために実行するコマンドです。 通常は、` --version`または` --help`となります。 例えば、NodeJSプラグインをテストするときは、次のように実行します: diff --git a/docs/manage/versions.md b/docs/manage/versions.md index 07fd8740..8eea1fb9 100644 --- a/docs/manage/versions.md +++ b/docs/manage/versions.md @@ -80,7 +80,7 @@ asdf local latest[:] `global` writes the version to `$HOME/.tool-versions`. -`shell` set the version to an environment variable named `ASDF_${TOOL}_VERSION`, for the current shell session only. +`shell` sets the version to an environment variable named `ASDF_${TOOL}_VERSION`, for the current shell session only. `local` writes the version to `$PWD/.tool-versions`, creating it if needed. diff --git a/lib/functions/installs.bash b/lib/functions/installs.bash index 1b440d27..124a5169 100644 --- a/lib/functions/installs.bash +++ b/lib/functions/installs.bash @@ -243,7 +243,7 @@ install_tool_version() { fi # Otherwise, remove the download directory if it exists elif [ -d "$download_path" ]; then - rm -r "$download_path" + rm -rf "$download_path" fi reshim_command "$plugin_name" "$full_version" diff --git a/test/setup_suite.bash b/test/setup_suite.bash index 549b195b..aa664c70 100644 --- a/test/setup_suite.bash +++ b/test/setup_suite.bash @@ -3,6 +3,11 @@ setup_suite() { # tests fail when it is set to something other than the temp dir. unset ASDF_DIR + # Also unset below variables, because in users shell shimmed commands + # (include bats) export them by determining user's real HOME. + unset ASDF_DATA_DIR + unset ASDF_CONFIG_FILE + # Set an agnostic Git configuration directory to prevent personal # configuration from interfering with the tests export GIT_CONFIG_GLOBAL=/dev/null