summaryrefslogtreecommitdiff
path: root/plugins/vagrant-prompt
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2024-10-27 17:31:38 +0100
committerGitHub <noreply@github.com>2024-10-27 17:31:38 +0100
commitfa64758aeaeb17abdefca5d193c1002230048977 (patch)
tree8182790f0bd6e995cf1b1b9b12d35853467df6bf /plugins/vagrant-prompt
parent68d189cb35b9826dc186f1697a501314a63e6fe2 (diff)
downloadzsh-fa64758aeaeb17abdefca5d193c1002230048977.tar.gz
zsh-fa64758aeaeb17abdefca5d193c1002230048977.tar.bz2
zsh-fa64758aeaeb17abdefca5d193c1002230048977.zip
fix(vagrant-prompt): make `vagrant_prompt_info` generic for any state (#12782)
Diffstat (limited to 'plugins/vagrant-prompt')
-rw-r--r--plugins/vagrant-prompt/README.md25
-rw-r--r--plugins/vagrant-prompt/vagrant-prompt.plugin.zsh28
2 files changed, 37 insertions, 16 deletions
diff --git a/plugins/vagrant-prompt/README.md b/plugins/vagrant-prompt/README.md
index 0720f4bde..f7bfce4f3 100644
--- a/plugins/vagrant-prompt/README.md
+++ b/plugins/vagrant-prompt/README.md
@@ -17,11 +17,15 @@ To display Vagrant info on your prompt add the `vagrant_prompt_info` to the
`$PROMPT` or `$RPROMPT` variable in your theme. Example:
```zsh
-PROMPT='%{$fg[$NCOLOR]%}%B%n%b%{$reset_color%}:%{$fg[blue]%}%B%c/%b%{$reset_color%} $(vagrant_prompt_info)$(svn_prompt_info)$(git_prompt_info)%(!.#.$) '
+PROMPT="$PROMPT"' $(vagrant_prompt_info)'
+# or
+RPROMPT='$(vagrant_prompt_info)'
```
-`vagrant_prompt_info` makes use of some custom variables. This is an example
-definition:
+### 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]%}["
@@ -31,3 +35,18 @@ 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:
+
+| 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 29f4038c5..2d8455a53 100644
--- a/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh
+++ b/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh
@@ -1,16 +1,18 @@
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
}