Browse Source

Add vagrant completion for individual VMs

For multi-VM setups some commands take the name of
a virtual machine.  Read the Vagrantfile and offer
suggestions.
Allan Caffee 14 years ago
parent
commit
8aec32b48b
1 changed files with 7 additions and 0 deletions
  1. 7 0
      plugins/vagrant/_vagrant

+ 7 - 0
plugins/vagrant/_vagrant

@@ -46,6 +46,11 @@ __box_list ()
     _wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g')
 }
 
+__vm_list ()
+{
+    _wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define *:\([a-zA-Z0-9]\+\)' 2>/dev/null | cut -d: -f2)
+}
+
 __vagrant-box ()
 {
     local curcontext="$curcontext" state line
@@ -99,6 +104,8 @@ case $state in
       (box)
           __vagrant-box
       ;;
+      (up|provision|package|destroy|reload|ssh|halt|resume|status)
+	_arguments ':feature:__vm_list'
     esac
   ;;
 esac