Skip to content

Commit

Permalink
Merge pull request #164 from mbrgm/add-veewee
Browse files Browse the repository at this point in the history
Add veewee completion
  • Loading branch information
nicoulaj committed Aug 8, 2013
2 parents a427ede + 5188228 commit 662229f
Showing 1 changed file with 164 additions and 0 deletions.
164 changes: 164 additions & 0 deletions src/_veewee
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
#compdef veewee
# ------------------------------------------------------------------------------
# Description
# -----------
#
# Completion script for veewee 0.3.7 (https://github.com/jedi4ever/veewee)
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Marius Bergmann (https://github.com/mbrgm)
#
# ------------------------------------------------------------------------------

typeset curcontext state line cmds ret

curcontext="$curcontext"
ret=1

_arguments -C \
'--debug' \
'--workdir=[Change the working directory (the folder containing the definitions folder).]:directory:_files -/' \
'1: :->cmds' \
'2: :->providers' \
'*: :->args' && ret=0


local -a provider_cmds; provider_cmds=(
'build:Build box'
'copy:Copy a file to the VM'
'define:Define a new basebox starting from a template'
'destroy:Destroys the virtualmachine that was built'
'halt:Activates a shutdown the virtualmachine'
'help:Describe subcommands or one specific subcommand'
'list:Lists all defined boxes'
'ostypes:List the available Operating System types'
'sendkeys:Sends the key sequence (comma separated) to the box. E.g for testing the :boot_cmd_sequence'
'ssh:SSH to box'
'templates:List the currently available templates'
'undefine:Removes the definition of a basebox'
'up:Starts a Box'
'validate:Validates a box against vmfusion compliancy rules'
'winrm:Execute command via winrm'
)

case $state in
cmds)
local -a cmds; cmds=(
'fusion:Subcommand for Vmware fusion'
'help:Describe available commands or one specific command'
'kvm:Subcommand for KVM'
'parallels:Subcommand for Parallels'
'vbox:Subcommand for VirtualBox'
'version:Prints the Veewee version information'
)

_describe -t commands 'veewee command' cmds && ret=0
;;

providers)
case $line[1] in
(help)
local -a cmds; cmds=(
'fusion'
'help'
'kvm'
'parallels'
'vbox'
'version'
)

_values -S , 'commands' $cmds && ret=0
;;

(fusion)
provider_cmds+='add_share:Adds a share to the guest'
provider_cmds+='export:Exports the basebox to the vagrant format'

_describe -t commands 'veewee fusion command' provider_cmds && ret=0
;;

(kvm)
provider_cmds+='export:Exports the basebox to the vagrant format'

_describe -t commands 'veewee kvm command' provider_cmds && ret=0
;;

(parallels)
_describe -t commands 'veewee parallels command' provider_cmds && ret=0
;;

(vbox)

provider_cmds+='export:Exports the basebox to the vagrant format'
provider_cmds+='screenshot:Takes a screenshot of the box'

_describe -t commands 'veewee vbox command' provider_cmds && ret=0
;;
esac;
;;
args)
case $line[2] in
(add_share|build|copy|destroy|export|halt|screenshot|sendkeys|ssh|undefine|up|validate|winrm)
if [ ${#line[@]} -eq 3 ]; then
boxes=( ${(f)"$(ls -1 ./definitions)"} )
_values -S , 'boxes' $boxes && ret=0
fi
;;
(define)
if [ ${#line[@]} -eq 4 ]; then
templates=( ${(f)"$(_call_program templates veewee $line[1] templates | awk '/^veewee.+define/{sub(/^.+>[:\47] [:\47]/, "");sub(/[:\47].+$/, "");print}')"} )
_values -S , 'templates' $templates && ret=0
fi
;;
(help)
local -a cmds; cmds=(
'build'
'copy'
'define'
'destroy'
'halt'
'help'
'list'
'ostypes'
'sendkeys'
'ssh'
'templates'
'undefine'
'up'
'validate'
'winrm'
)
if [ $line[1] = "fusion" ]; then
cmds+='add_share'
cmds+='export'
elif [ $line[1] = "kvm" ]; then
cmds+='export'
elif [ $line[1] = "vbox" ]; then
cmds+='export'
cmds+='screenshot'
fi
_values -S , 'commands' $cmds && ret=0
;;
esac;
case $line[2] in
(add_share)
if [ ${#line[@]} -eq 5 ]; then
_arguments "*::filename:_files"
fi
;;
(copy)
if [ ${#line[@]} -eq 4 ]; then
_arguments "*::filename:_files"
fi
;;
(screenshot)
if [ ${#line[@]} -eq 4 ]; then
_arguments "*::filename:_files"
fi
;;
esac;
;;
esac;

0 comments on commit 662229f

Please sign in to comment.