Browse Source

vagrant-prompt: replace `grep -P` call with sed and clean up

Fixes #9207
Marc Cornellà 3 years ago
parent
commit
4c9fc2634b
1 changed files with 10 additions and 15 deletions
  1. 10 15
      plugins/vagrant-prompt/vagrant-prompt.plugin.zsh

+ 10 - 15
plugins/vagrant-prompt/vagrant-prompt.plugin.zsh

@@ -16,22 +16,17 @@
 # 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}")
+  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_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
+    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
   fi