feat(mise): add ZSH_MISE_AUTOEXPORT_VERSIONS setting to export MISE_TOOL_* variables on directory change

This commit is contained in:
Olivier Mehani 2024-10-28 12:59:52 +11:00
parent c690f73161
commit d794a6e4a0
No known key found for this signature in database
GPG Key ID: 432AAE851836562A
2 changed files with 17 additions and 0 deletions

View File

@ -30,3 +30,7 @@ mise use -g node@system Use system node as global default
mise install node@20.0.0 Install a specific version number
mise use -g node@20 Use node-20.x as global default
```
## Setting
- `ZSH_MISE_AUTOEXPORT_VERSIONS`: if set to `true`, the plugin will register a `chpwd` hook to update environment variable to reflect the current configuration. The variables are constructed from the output of `mise -ls -c`, with the `MISE_TOOL_` prefix, and their value is set to the full version of the tool, e.g., `M̀ISE_TOOL_PYTHON=3.8.20``. This can be used when building prompts.

View File

@ -22,6 +22,19 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_$__mise" ]]; then
_comps[$__mise]=_$__mise
fi
if [[ "$ZSH_MISE_AUTOEXPORT_VERSIONS" != true ]]; then
_updateMiseVersions() {
unset -m "MISE_TOOL_*"
eval $(mise ls -c --no-header \
| sed 's/^\(\S\+\)\s\+\(\S\+\).*$/export MISE_TOOL_\U\1=\2/')
}
autoload -U add-zsh-hook
add-zsh-hook chpwd _updateMiseVersions
_updateMiseVersions # Initial call to check the current directory at shell startup
fi
# Generate and load mise completion
$__mise completion zsh >| "$ZSH_CACHE_DIR/completions/_$__mise" &|
unset __mise