summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorFedyashev Nikita <loci.master@gmail.com>2010-11-15 14:45:04 -0500
committerFedyashev Nikita <loci.master@gmail.com>2010-11-15 14:46:15 -0500
commit148c14e4f7e3ee9134807304a7c38682276e918c (patch)
treea150d3316073a6f4be157b2645cc624fbf5cbf6a /plugins
parentdc12853b0c3e5af9e42f44cb9efdf57d44d20711 (diff)
downloadzsh-148c14e4f7e3ee9134807304a7c38682276e918c.tar.gz
zsh-148c14e4f7e3ee9134807304a7c38682276e918c.tar.bz2
zsh-148c14e4f7e3ee9134807304a7c38682276e918c.zip
vagrant plugin autocompletion - initial version
Diffstat (limited to 'plugins')
-rw-r--r--plugins/vagrant/_vagrant139
-rw-r--r--plugins/vagrant/vagrant.plugin.zsh3
2 files changed, 142 insertions, 0 deletions
diff --git a/plugins/vagrant/_vagrant b/plugins/vagrant/_vagrant
new file mode 100644
index 000000000..4cd6a46d2
--- /dev/null
+++ b/plugins/vagrant/_vagrant
@@ -0,0 +1,139 @@
+#compdef vagrant
+#autoload
+
+# vagrant zsh completion, based on homebrew completion
+
+__task_list ()
+{
+ local expl
+ declare -a tasks
+
+ tasks=(box destroy halt init package provision reload resume ssh ssh_config status suspend up version)
+
+ _wanted tasks expl 'help' compadd $tasks
+}
+
+__box_list ()
+{
+ _wanted application expl 'hxlp' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g')
+}
+
+__vagrant-box ()
+{
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+
+ # local -a subcommands
+ # subcommands=(
+ # 'start:Start a new release branch'
+ # 'finish:Finish a release branche.'
+ # 'list:List all your release branches. (Alias to `git flow release`)'
+ # )
+ # _describe -t commands 'git flow release' subcommands
+ # _arguments \
+ # -v'[Verbose (more) output]'
+ _describe -t commands "gem subcommand" _box_arguments
+ return
+ ;;
+
+ (options)
+ case $line[1] in
+
+ (repackage)
+ _arguments \
+ -F'[Fetch from origin before performing finish]' \
+ -r'[Rebase instead of merge]'\
+ ':feature:__box_list'
+
+
+
+ ;;
+ esac
+ ;;
+ esac
+
+}
+
+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.'
+)
+
+local expl
+local -a boxes installed_boxes
+
+#_arguments \
+# '(-v --version)'{-v,--version}'[show version]' \
+# '(-h --help)'{-h,--help}'[show help]' \
+# '*:: :->subcmds' && return 0
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+
+
+
+#echo $state
+#echo -e "\n\n\n\n"
+#echo $line[1]
+
+case $state in
+
+ (command)
+
+ _describe -t commands "gem subcommand" _1st_arguments
+ return
+ ;;
+
+ (options)
+
+ case $line[1] in
+
+ (help)
+ _arguments \
+ -F'[Fetch from origin before performing finish]' \
+ -r'[Rebase instead of merge]'\
+ ':feature:__task_list'
+
+ ;;
+
+ (box)
+
+ __vagrant-box
+ ;;
+ esac
+ ;;
+esac
diff --git a/plugins/vagrant/vagrant.plugin.zsh b/plugins/vagrant/vagrant.plugin.zsh
new file mode 100644
index 000000000..5e9bcf10a
--- /dev/null
+++ b/plugins/vagrant/vagrant.plugin.zsh
@@ -0,0 +1,3 @@
+fpath=($ZSH/plugins/vagrant $fpath)
+autoload -U compinit
+compinit -i