てすてす
Last active
December 27, 2015 10:49
-
-
Save lamanotrama/7313695 to your computer and use it in GitHub Desktop.
これにsahara plugin(sandbox)の補完を追加した。 https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/vagrant/_vagrant
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 | |
#autoload | |
# vagrant zsh completion | |
local -a _1st_arguments | |
_1st_arguments=( | |
'box:Box commands' | |
'destroy:Destroys the vagrant environment' | |
'halt:Halts the currently running vagrant environment' | |
'init:[box_name] [box_url] Initializes current folder for Vagrant usage' | |
'package:Packages a vagrant environment for distribution' | |
'plugin:Plugin commands' | |
'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' | |
'sandbox:plugin sahara' | |
'--help:[TASK] Describe available tasks or one specific task' | |
'--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 _sandbox_arguments | |
_sandbox_arguments=( | |
"commit" | |
"off" | |
"on" | |
"rollback" | |
"status" | |
) | |
__task_list () | |
{ | |
local expl | |
declare -a tasks | |
tasks=(box destroy halt init package provision reload resume ssh ssh_config status suspend up version sandbox) | |
_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') | |
} | |
__vm_list () | |
{ | |
_wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define *:\([a-zA-Z0-9]\+\)' 2>/dev/null | cut -d: -f2) | |
} | |
__vagrant-sandbox () | |
{ | |
local curcontext="$curcontext" state line | |
typeset -A opt_args | |
_arguments -C \ | |
':command:->command' \ | |
'*::options:->options' | |
case $state in | |
(command) | |
_describe -t commands "gem subcommand" _sandbox_arguments | |
return | |
;; | |
(options) | |
_arguments ':feature:__vm_list' | |
;; | |
esac | |
} | |
__vagrant-box () | |
{ | |
local curcontext="$curcontext" state line | |
typeset -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 | |
} | |
local expl | |
local -a boxes installed_boxes | |
local curcontext="$curcontext" state line | |
typeset -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 | |
;; | |
(sandbox) | |
__vagrant-sandbox | |
;; | |
(up|provision|package|destroy|reload|ssh|halt|resume|status) | |
_arguments ':feature:__vm_list' | |
esac | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment