Add veewee completion
This commit is contained in:
parent
c0a2c0c933
commit
5188228749
|
@ -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;
|
Loading…
Reference in New Issue