diff options
| author | Tuowen Zhao <ztuowen@gmail.com> | 2026-01-04 22:47:54 -0800 |
|---|---|---|
| committer | Tuowen Zhao <ztuowen@gmail.com> | 2026-01-04 22:47:54 -0800 |
| commit | 2aa4cb7a52b28722816ecfd55f3b06293332c55c (patch) | |
| tree | f02a9f3d59d109c70caf932a24e43368994e0e8c /plugins/vagrant-prompt | |
| parent | 7e951c254e779ff0620537cf43ca69dd878387b4 (diff) | |
| parent | d23d3ea69fdb839088e6e5589557cce77b34aaf8 (diff) | |
| download | zsh-2aa4cb7a52b28722816ecfd55f3b06293332c55c.tar.gz zsh-2aa4cb7a52b28722816ecfd55f3b06293332c55c.tar.bz2 zsh-2aa4cb7a52b28722816ecfd55f3b06293332c55c.zip | |
Diffstat (limited to 'plugins/vagrant-prompt')
| -rw-r--r-- | plugins/vagrant-prompt/README.md | 50 | ||||
| -rw-r--r-- | plugins/vagrant-prompt/vagrant-prompt.plugin.zsh | 45 |
2 files changed, 63 insertions, 32 deletions
diff --git a/plugins/vagrant-prompt/README.md b/plugins/vagrant-prompt/README.md index c5bc55d17..f7bfce4f3 100644 --- a/plugins/vagrant-prompt/README.md +++ b/plugins/vagrant-prompt/README.md @@ -1,6 +1,52 @@ +# vagrant-prompt + This plugin prompts the status of the Vagrant VMs. It supports single-host and multi-host configurations as well. -Look inside the source for documentation about custom variables. +To use it, add `vagrant-prompt` to the plugins array in your zshrc file: + +```zsh +plugins=(... vagrant-prompt) +``` + +**Alberto Re <alberto.re@gmail.com>** + +## Usage + +To display Vagrant info on your prompt add the `vagrant_prompt_info` to the +`$PROMPT` or `$RPROMPT` variable in your theme. Example: + +```zsh +PROMPT="$PROMPT"' $(vagrant_prompt_info)' +# or +RPROMPT='$(vagrant_prompt_info)' +``` + +### Customization + +`vagrant_prompt_info` makes use of the following custom variables, which can be set in your +`.zshrc` file: + +```zsh +ZSH_THEME_VAGRANT_PROMPT_PREFIX="%{$fg_bold[blue]%}[" +ZSH_THEME_VAGRANT_PROMPT_SUFFIX="%{$fg_bold[blue]%}]%{$reset_color%} " +ZSH_THEME_VAGRANT_PROMPT_RUNNING="%{$fg_no_bold[green]%}●" +ZSH_THEME_VAGRANT_PROMPT_POWEROFF="%{$fg_no_bold[red]%}●" +ZSH_THEME_VAGRANT_PROMPT_SUSPENDED="%{$fg_no_bold[yellow]%}●" +ZSH_THEME_VAGRANT_PROMPT_NOT_CREATED="%{$fg_no_bold[white]%}○" +``` + +### State to variable mapping + +The plugin uses the output reported by `vagrant status` to print whichever symbol matches, +according to the following table: -Alberto Re <alberto.re@gmail.com> +| State | Symbol | +| ----------- | -------------------------------------- | +| running | `ZSH_THEME_VAGRANT_PROMPT_RUNNING` | +| not running | `ZSH_THEME_VAGRANT_PROMPT_POWEROFF` | +| poweroff | `ZSH_THEME_VAGRANT_PROMPT_POWEROFF` | +| paused | `ZSH_THEME_VAGRANT_PROMPT_SUSPENDED` | +| saved | `ZSH_THEME_VAGRANT_PROMPT_SUSPENDED` | +| suspended | `ZSH_THEME_VAGRANT_PROMPT_SUSPENDED` | +| not created | `ZSH_THEME_VAGRANT_PROMPT_NOT_CREATED` | diff --git a/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh b/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh index d7c76c3c9..2d8455a53 100644 --- a/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh +++ b/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh @@ -1,33 +1,18 @@ -# vim:ft=zsh ts=2 sw=2 sts=2 -# -# To display Vagrant infos on your prompt add the vagrant_prompt_info to the -# $PROMPT variable in your theme. Example: -# -# PROMPT='%{$fg[$NCOLOR]%}%B%n%b%{$reset_color%}:%{$fg[blue]%}%B%c/%b%{$reset_color%} $(vagrant_prompt_info)$(svn_prompt_info)$(git_prompt_info)%(!.#.$) ' -# -# `vagrant_prompt_info` makes use of some custom variables. This is an example -# definition: -# -# ZSH_THEME_VAGRANT_PROMPT_PREFIX="%{$fg_bold[blue]%}[" -# ZSH_THEME_VAGRANT_PROMPT_SUFFIX="%{$fg_bold[blue]%}]%{$reset_color%} " -# ZSH_THEME_VAGRANT_PROMPT_RUNNING="%{$fg_no_bold[green]%}●" -# ZSH_THEME_VAGRANT_PROMPT_POWEROFF="%{$fg_no_bold[red]%}●" -# ZSH_THEME_VAGRANT_PROMPT_SUSPENDED="%{$fg_no_bold[yellow]%}●" -# ZSH_THEME_VAGRANT_PROMPT_NOT_CREATED="%{$fg_no_bold[white]%}○" - function vagrant_prompt_info() { - local vm_states vm_state - if [[ -d .vagrant && -f Vagrantfile ]]; then - vm_states=(${(f)"$(vagrant status 2> /dev/null | sed -nE 's/^.*(saved|poweroff|running|not created) \([[:alnum:]_]+\)$/\1/p')"}) - printf '%s' $ZSH_THEME_VAGRANT_PROMPT_PREFIX - for vm_state in $vm_states; do - case "$vm_state" in - saved) printf '%s' $ZSH_THEME_VAGRANT_PROMPT_SUSPENDED ;; - running) printf '%s' $ZSH_THEME_VAGRANT_PROMPT_RUNNING ;; - poweroff) printf '%s' $ZSH_THEME_VAGRANT_PROMPT_POWEROFF ;; - "not created") printf '%s' $ZSH_THEME_VAGRANT_PROMPT_NOT_CREATED ;; - esac - done - printf '%s' $ZSH_THEME_VAGRANT_PROMPT_SUFFIX + if [[ ! -d .vagrant || ! -f Vagrantfile ]]; then + return fi + + local vm_states vm_state + vm_states=(${(f)"$(vagrant status 2> /dev/null | sed -nE 's/^[^ ]* *([[:alnum:] ]*) \([[:alnum:]_]+\)$/\1/p')"}) + printf '%s' $ZSH_THEME_VAGRANT_PROMPT_PREFIX + for vm_state in $vm_states; do + case "$vm_state" in + running) printf '%s' $ZSH_THEME_VAGRANT_PROMPT_RUNNING ;; + "not running"|poweroff) printf '%s' $ZSH_THEME_VAGRANT_PROMPT_POWEROFF ;; + paused|saved|suspended) printf '%s' $ZSH_THEME_VAGRANT_PROMPT_SUSPENDED ;; + "not created") printf '%s' $ZSH_THEME_VAGRANT_PROMPT_NOT_CREATED ;; + esac + done + printf '%s' $ZSH_THEME_VAGRANT_PROMPT_SUFFIX } |
