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