plugins/vagrant/_vagrant
148c14e4
 #compdef vagrant 
 #autoload
 
6dbfdd9e
 # vagrant zsh completion
 
 local -a _1st_arguments
 _1st_arguments=(
     'box:Box commands'
     'destroy:Destroys the vagrant environment'
     'halt:Halts the currently running vagrant environment'
     'help:[TASK] Describe available tasks or one specific task'
     'init:[box_name] [box_url] Initializes current folder for Vagrant usage'
     'package:Packages a vagrant environment for distribution'
     'provision:Run the provisioner'
     'reload:Reload the vagrant environment'
     'resume:Resumes a suspend vagrant environment'
     'ssh:SSH into the currently running environment'
     'ssh_config:outputs .ssh/config valid syntax for connecting to this environment via ssh.'
     'status:Shows the status of the current Vagrant environment.'
     'suspend:Suspends the currently running vagrant environment'
     'up:Creates the vagrant environment'
     'version:Prints the Vagrant version information'
 )
 
 local -a _box_arguments
 _box_arguments=(
     'add:NAME URI Add a box to the system'
     'help:COMMAND Describe subcommands or one specific subcommand'
     'list:Lists all installed boxes'
     'remove:NAME Remove a box from the system'
     'repackage:NAME Repackage an installed box into a `.box` file.'
 )
148c14e4
 
 __task_list ()
 {
ea274ab9
     local expl
     declare -a tasks
148c14e4
 
ea274ab9
     tasks=(box destroy halt init package provision reload resume ssh ssh_config status suspend up version)
148c14e4
 
ea274ab9
     _wanted tasks expl 'help' compadd $tasks
148c14e4
 }
 
 __box_list ()
 {
ea274ab9
     _wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g')
148c14e4
 }
 
 __vagrant-box ()
 {
ea274ab9
     local curcontext="$curcontext" state line
     typeset -A opt_args
148c14e4
 
ea274ab9
     _arguments -C \
         ':command:->command' \
         '*::options:->options'
148c14e4
 
ea274ab9
    case $state in
        (command)
            _describe -t commands "gem subcommand" _box_arguments
            return
        ;;
 
        (options)
            case $line[1] in
                (repackage|remove)
6dbfdd9e
                    _arguments ':feature:__box_list' 
ea274ab9
                ;;
            esac
        ;;
     esac
148c14e4
 }
 
 
6dbfdd9e
 
148c14e4
 
 local expl
 local -a boxes installed_boxes
 
ea274ab9
 local curcontext="$curcontext" state line
 typeset -A opt_args
148c14e4
 
ea274ab9
 _arguments -C \
     ':command:->command' \
     '*::options:->options'
148c14e4
 
 case $state in
   (command)
ea274ab9
       _describe -t commands "gem subcommand" _1st_arguments
       return
148c14e4
   ;;
 
   (options)
     case $line[1] in
       (help)
6dbfdd9e
          _arguments ':feature:__task_list' 
148c14e4
       ;;
 
       (box)
ea274ab9
           __vagrant-box
148c14e4
       ;;
     esac
   ;;
 esac