Last active
August 29, 2015 14:04
-
-
Save glidenote/f7cbc9938f3b8df694f3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#compdef vagrant | |
# ------------------------------------------------------------------------------ | |
# Description | |
# ----------- | |
# | |
# Completion script for Vagrant (http://vagrantup.com). | |
# | |
# Source: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/vagrant | |
# | |
# ------------------------------------------------------------------------------ | |
# Authors | |
# ------- | |
# | |
# * Nikita Fedyashev (https://github.com/nfedyashev) | |
# * Mark Cornick (https://github.com/markcornick) | |
# | |
# ------------------------------------------------------------------------------ | |
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' | |
'plugin:Manage plugins' | |
'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.' | |
) | |
local -a _plugin_arguments | |
_plugin_arguments=( | |
'install:NAME Install a plugin to the system' | |
'license:NAME LICENSE_FILE Add a license for an installed plugin' | |
'list:Lists all installed plugins' | |
'uninstall:NAME Uninstall a plugin from the system' | |
) | |
__task_list () | |
{ | |
local expl | |
local -a tasks | |
tasks=(box destroy halt init package plugin provision reload resume ssh ssh_config status suspend up version) | |
_wanted tasks expl 'help' compadd $tasks | |
} | |
__box_list () | |
{ | |
_wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g') | |
} | |
__plugin_list () | |
{ | |
_wanted application expl 'command' compadd $(command vagrant plugin list 2>/dev/null| cut -d' ' -f1) | |
} | |
__vm_list () | |
{ | |
_wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define * ['\''":]"\?\([a-zA-Z0-9\-\.]\+\)['\''"]\?"' 2>/dev/null | awk '{print $NF}' | sed 's/'\''//g'|sed 's/\"//g'|sed 's/^://' ) | |
} | |
__vagrant-box () | |
{ | |
local curcontext="$curcontext" state line | |
local -A opt_args | |
_arguments -C \ | |
':command:->command' \ | |
'*::options:->options' | |
case $state in | |
(command) | |
_describe -t commands "gem subcommand" _box_arguments | |
return | |
;; | |
(options) | |
case $line[1] in | |
(repackage|remove) | |
_arguments ':feature:__box_list' | |
;; | |
esac | |
;; | |
esac | |
} | |
__vagrant-plugin () | |
{ | |
local curcontext="$curcontext" state line | |
local -A opt_args | |
_arguments -C \ | |
':command:->command' \ | |
'*::options:->options' | |
case $state in | |
(command) | |
_describe -t commands "gem subcommand" _plugin_arguments | |
return | |
;; | |
(options) | |
case $line[1] in | |
(license) | |
_arguments ':feature:__plugin_list' '*:file:_files' | |
;; | |
(uninstall) | |
_arguments ':feature:__plugin_list' | |
;; | |
esac | |
;; | |
esac | |
} | |
local expl | |
local -a boxes installed_boxes | |
local curcontext="$curcontext" state line | |
local -A opt_args | |
_arguments -C \ | |
':command:->command' \ | |
'*::options:->options' | |
case $state in | |
(command) | |
_describe -t commands "gem subcommand" _1st_arguments | |
return | |
;; | |
(options) | |
case $line[1] in | |
(help) | |
_arguments ':feature:__task_list' | |
;; | |
(box) | |
__vagrant-box | |
;; | |
(plugin) | |
__vagrant-plugin | |
;; | |
(up|provision|package|destroy|reload|ssh|halt|resume|status) | |
_arguments ':feature:__vm_list' | |
esac | |
;; | |
esac | |
# Local Variables: | |
# mode: Shell-Script | |
# sh-indentation: 2 | |
# indent-tabs-mode: nil | |
# sh-basic-offset: 2 | |
# End: | |
# vim: ft=zsh sw=2 ts=2 et |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/_vagrant b/src/_vagrant | |
index f36fee6..de1a67e 100644 | |
--- a/src/_vagrant | |
+++ b/src/_vagrant | |
@@ -76,7 +76,7 @@ __plugin_list () | |
__vm_list () | |
{ | |
- _wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define * ['\''":]\?\([a-zA-Z0-9\-]\+\)['\''"]\?' 2>/dev/null | awk '{print $NF}' | sed 's/'\''//g'|sed 's/\"//g'|sed 's/^://' ) | |
+ _wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define * ['\''":]"\?\([a-zA-Z0-9\-\.]\+\)['\''"]\?"' 2>/dev/null | awk '{print $NF}' | sed 's/'\''//g'|sed 's/\"//g'|sed 's/^://' ) | |
} | |
__vagrant-box () |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment