From 29a2394c8f88efe04a61460a9a171228c39b1de0 Mon Sep 17 00:00:00 2001
From: Alberto Re <alberto.re@gmail.com>
Date: Sun, 1 Jul 2018 20:16:08 +0200
Subject: [PATCH] Adds `vagrant_prompt_info` function to your shell (#4081)

---
 plugins/vagrant-prompt/README.md              |  6 +++
 .../vagrant-prompt/vagrant-prompt.plugin.zsh  | 38 +++++++++++++++++++
 2 files changed, 44 insertions(+)
 create mode 100644 plugins/vagrant-prompt/README.md
 create mode 100644 plugins/vagrant-prompt/vagrant-prompt.plugin.zsh

diff --git a/plugins/vagrant-prompt/README.md b/plugins/vagrant-prompt/README.md
new file mode 100644
index 000000000..c5bc55d17
--- /dev/null
+++ b/plugins/vagrant-prompt/README.md
@@ -0,0 +1,6 @@
+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. 
+
+Alberto Re <alberto.re@gmail.com>
diff --git a/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh b/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh
new file mode 100644
index 000000000..28bf31f91
--- /dev/null
+++ b/plugins/vagrant-prompt/vagrant-prompt.plugin.zsh
@@ -0,0 +1,38 @@
+# 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() {
+  test -d .vagrant && test -f Vagrantfile
+  if [[ "$?" == "0" ]]; then
+    statuses=$(vagrant status 2> /dev/null | grep -P "\w+\s+[\w\s]+\s\(\w+\)")
+    statuses=("${(f)statuses}")
+    printf '%s' $ZSH_THEME_VAGRANT_PROMPT_PREFIX
+    for vm_details in $statuses; do
+      vm_state=$(echo $vm_details | grep -o -E "saved|poweroff|not created|running")
+      if [[ "$vm_state" == "running" ]]; then
+        printf '%s' $ZSH_THEME_VAGRANT_PROMPT_RUNNING
+      elif [[ "$vm_state" == "saved" ]]; then
+        printf '%s' $ZSH_THEME_VAGRANT_PROMPT_SUSPENDED
+      elif [[ "$vm_state" == "not created" ]]; then
+        printf '%s' $ZSH_THEME_VAGRANT_PROMPT_NOT_CREATED
+      elif [[ "$vm_state" == "poweroff" ]]; then
+        printf '%s' $ZSH_THEME_VAGRANT_PROMPT_POWEROFF
+      fi
+    done
+    printf '%s' $ZSH_THEME_VAGRANT_PROMPT_SUFFIX
+  fi
+}