4 Commits

Author SHA1 Message Date
04fba0a65a Bumped supported VirtualBox version 2017-07-29 09:19:23 +02:00
26eeb62a6d Added alias for lowercase 'vboxmanage' support 2017-01-31 19:17:15 +01:00
88566ade92 Bump to VirtualBox 5.0.18 2016-07-16 17:30:03 +02:00
fcc43508e6 Updated list, closemedium, controlvm, modifyvm, natnetwork
and several other commands.
2016-07-05 19:59:50 +02:00
2 changed files with 456 additions and 122 deletions

View File

@@ -6,7 +6,7 @@ script. However, in some point of time I've decided to rewrite it almost from
scratch. scratch.
Current version of script was written and tested against VBoxManage in version Current version of script was written and tested against VBoxManage in version
4.3.32, and supports all commands (in some extent ;)). 5.0.40, and supports all commands (in some extent ;)).
Unlike other attempts, I've tried to make the script context aware. See the Unlike other attempts, I've tried to make the script context aware. See the
simple session with the VBoxManage command below, to have an idea how it works: simple session with the VBoxManage command below, to have an idea how it works:

View File

@@ -1,6 +1,8 @@
# bash command-line completion for VBoxManage command # bash command-line completion for VBoxManage command
# #
# Author: Roman 'gryf' Dobosz <gryf73@gmail.com> # Author: Roman 'gryf' Dobosz <gryf73@gmail.com>
# URL: https://bitbucket.org/gryf/vboxmanage-bash-completion
# URL: https://github.com/gryf/vboxmanage-bash-completion
# License: 3-clause BSD-style license (see LICENSE file) # License: 3-clause BSD-style license (see LICENSE file)
_VBoxManage() { _VBoxManage() {
@@ -399,6 +401,24 @@ _VBoxManage() {
return 1 return 1
} }
# search for the word before current one, and try to match apropriate item
# to be displayed
# for example:
# foo bar disk baz
# will search for word disk.
_get_medium () {
case "${COMP_WORDS[COMP_CWORD-2]}" in
disk)
_hdd_comp
;;
dvd)
_dvds_comp
;;
floppy)
_floppy_comp
;;
esac
}
COMP_WORDBREAKS=${COMP_WORDBREAKS//|/} # remove pipe from comp word breaks COMP_WORDBREAKS=${COMP_WORDBREAKS//|/} # remove pipe from comp word breaks
COMPREPLY=() COMPREPLY=()
@@ -432,6 +452,7 @@ _VBoxManage() {
[[ -z "${name}" ]] && [[ -z "${name}" ]] &&
_vms_state_comp _vms_state_comp
;; ;;
bandwidthctl) bandwidthctl)
local items=(add set remove list) local items=(add set remove list)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
@@ -478,26 +499,49 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
clonehd) checkmediumpwd)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_hdd_comp _hdd_comp
else _floppy_comp
_find_item_name 2 _dvds_comp
items=(--format --variant --existing) fi
_get_excluded_items "${items[@]}" ;;
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
clonemedium)
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
else
case "${prev}" in case "${prev}" in
--format) disk)
COMPREPLY=( $(compgen -W "VDI VMDK VHD RAW" -- ${cur}) ) _hdd_comp
;; ;;
--variant) dvd)
COMPREPLY=( $(compgen -W "Standard Fixed Split2G Stream _dvds_comp
ESX" -- ${cur}) )
;; ;;
floppy)
_floppy_comp
;;
*)
_find_item_name 2
items=(--format --variant --existing)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in
--format)
COMPREPLY=( $(compgen -W "VDI VMDK VHD RAW" --\
${cur}) )
;;
--variant)
COMPREPLY=( $(compgen -W "Standard Fixed Split2G
Stream ESX" -- ${cur}) )
;;
esac
;;
esac esac
fi fi
;; ;;
clonevm) clonevm)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
@@ -530,9 +574,13 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
closemedium) closemedium)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) ) COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
_hdd_comp
_dvds_comp
_floppy_comp
else else
case "${prev}" in case "${prev}" in
disk) disk)
@@ -552,6 +600,7 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
controlvm) controlvm)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp runningvms _vms_comp runningvms
@@ -570,8 +619,12 @@ _VBoxManage() {
screenshotpng setcredentials setlinkstate1 setlinkstate2 screenshotpng setcredentials setlinkstate1 setlinkstate2
setlinkstate3 setlinkstate4 setlinkstate5 setlinkstate6 setlinkstate3 setlinkstate4 setlinkstate5 setlinkstate6
setlinkstate7 setlinkstate8 setvideomodehint teleport unplugcpu setlinkstate7 setlinkstate8 setvideomodehint teleport unplugcpu
usbattach usbdetach vcpenabled vcpscreens vrde vrdeport usbattach usbdetach vrde vrdeport vrdeproperty
vrdeproperty vrdevideochannelquality webcam) vrdevideochannelquality webcam videocap videocapscreens
videocapfile videocapres videocaprate videocapfps
videocapmaxtime videocapmaxsize addencpassword removeencpassword
removeallencpasswords)
_find_item_name 2 _find_item_name 2
subcommand=${COMP_WORDS[$((index+1))]} subcommand=${COMP_WORDS[$((index+1))]}
@@ -615,13 +668,13 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "disabled COMPREPLY=( $(compgen -W "disabled
hosttoguest" -- ${cur}) ) hosttoguest" -- ${cur}) )
;; ;;
vrde|vcpenabled) vrde|videocap)
[[ ${prev} == "vrde" || [[ ${prev} == "vrde" ||
${prev} == "vcpenabled" ]] && \ ${prev} == "videocap" ]] && \
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
vcpscreens) videocapscreens)
[[ ${prev} == "vcpscreens" ]] && \ [[ ${prev} == "videocapscreens" ]] && \
COMPREPLY=( $(compgen -W "all none" -- ${cur}) ) COMPREPLY=( $(compgen -W "all none" -- ${cur}) )
;; ;;
setcredentials) setcredentials)
@@ -644,6 +697,22 @@ _VBoxManage() {
[[ ${prev} == "attach" ]] && \ [[ ${prev} == "attach" ]] && \
_webcam_avail_comp _webcam_avail_comp
;; ;;
usbattach)
tmp=(--capturefile)
_get_excluded_items "${tmp[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
--removeonsuspend)
COMPREPLY=( $(compgen -W "yes no" -- ${cur}) )
;;
addencpassword)
tmp=(--host --port --maxdowntime --passwordfile
--password)
_get_excluded_items "${tmp[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac esac
else else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
@@ -651,6 +720,7 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
convertfromraw) convertfromraw)
local items=(--format --variant --uuid) local items=(--format --variant --uuid)
@@ -670,35 +740,45 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
createhd)
createmedium)
items=(--filename --size --sizebyte --diffparent --format --variant) items=(--filename --size --sizebyte --diffparent --format --variant)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
else else
[[ " ${COMP_WORDS[@]} " == *" --size "* ||
" ${COMP_WORDS[@]} " == *" --sizebyte "* ]] &&
items=(--filename --diffparent --format --variant)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in case "${prev}" in
--filename) disk|dvd|floppy)
COMPREPLY=( $(compgen -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
;; ;;
--diffparent) *)
COMPREPLY=() [[ " ${COMP_WORDS[@]} " == *" --size "* ||
_hdd_comp " ${COMP_WORDS[@]} " == *" --sizebyte "* ]] &&
;; items=(--filename --diffparent --format --variant)
--format) _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "VDI VMDK VHD" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
--variant) case "${prev}" in
COMPREPLY=( $(compgen -W "Standard Fixed Split2G Stream --filename)
ESX" -- ${cur}) ) COMPREPLY=( $(compgen -- ${cur}) )
;;
--diffparent)
COMPREPLY=()
_hdd_comp
;;
--format)
COMPREPLY=( $(compgen -W "VDI VMDK VHD" --\
${cur}) )
;;
--variant)
COMPREPLY=( $(compgen -W "Standard Fixed Split2G
Stream ESX" -- ${cur}) )
;;
esac
;; ;;
esac esac
fi fi
;; ;;
createvm) createvm)
items=(--name --groups --ostype --register --basefolder --uuid) items=(--name --groups --ostype --register --basefolder --uuid)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
@@ -726,9 +806,10 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
debugvm) debugvm)
items=(dumpguestcore info injectnmi log logdest logflags osdetect items=(dumpguestcore info injectnmi log logdest logflags osdetect
osinfo getregisters setregisters show statistics) osinfo osdmesg getregisters setregisters show statistics)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp runningvms _vms_comp runningvms
else else
@@ -760,6 +841,14 @@ _VBoxManage() {
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
osdmesg)
items=()
[[ " ${COMP_WORDS[@]} " != *" --lines "* &&
" ${COMP_WORDS[@]} " != *" -n "* ]] &&
items+=(--lines -n)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac esac
_get_excluded_items "--descriptions" _get_excluded_items "--descriptions"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
@@ -771,6 +860,7 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
dhcpserver) dhcpserver)
items=(add modify remove) items=(add modify remove)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -815,12 +905,26 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
discardstate) discardstate)
_find_item_name 2 _find_item_name 2
COMPREPLY=() COMPREPLY=()
[[ -z "${name}" ]] && [[ -z "${name}" ]] &&
_vms_state_comp _vms_state_comp
;; ;;
encryptmedium)
if [[ ${prev} == ${cmd} ]]; then
_hdd_comp
_floppy_comp
_dvds_comp
else
COMPREPLY=( $(compgen -W "--newpassword --oldpassword --cipher
--newpasswordid" -- ${cur}) )
fi
;;
"export") "export")
items=( --manifest --iso --options --vsys) items=( --manifest --iso --options --vsys)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
@@ -850,6 +954,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
extpack) extpack)
items=(install uninstall cleanup) items=(install uninstall cleanup)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -875,6 +980,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
getextradata) getextradata)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "global" -- ${cur}) ) COMPREPLY=( $(compgen -W "global" -- ${cur}) )
@@ -884,11 +990,13 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
guestcontrol) guestcontrol)
local items=(execute copyfrom copyto cp createdir createdirectory local items=(run start copyfrom copyto mkdir createdir
mkdir md removedir removedirectory rmdir removefile rm ren rename mv createdirectory rmdir removedir removedirectory removefile rm mv
createtemp createtemporary mktemp list process pskill kill session move ren rename mktemp createtemp createtemporary stat list
stat updateadditions watch) closeprocess closesession updatega updateguestadditions
updateadditions watch)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp runningvms _vms_comp runningvms
@@ -897,81 +1005,213 @@ _VBoxManage() {
subcommand=${COMP_WORDS[$((index+1))]} subcommand=${COMP_WORDS[$((index+1))]}
if [[ " ${items[@]} " == *" $subcommand "* ]]; then if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in case "${subcommand}" in
exec|execute) run)
items=(--image --username --passwordfile --password items=(--exe --timeout --unquoted-args
--domain --verbose --timeout --environment --ignore-operhaned-processes --no-profile
--wait-exit --wait-stdout --wait-stderr --dos2unix --dos2unix --unix2dos --username --domain --)
--unquoted-args --unix2dos)
[[ " ${COMP_WORDS[@]} " == *" --password "* || [[ " ${comp_words[@]} " != *" --password "* ||
" ${COMP_WORDS[@]} " == *" --passwordfile "* ]] && " ${comp_words[@]} " != *" --passwordfile "* ]] &&
items=(--image --username --domain --verbose items+=(--passwordfile --password)
--timeout --environment --wait-exit --wait-stdout [[ " ${COMP_WORDS[@]} " != *" --putenv "* &&
--wait-stderr --dos2unix --unquoted-args " ${COMP_WORDS[@]} " != *" -E "* ]] &&
--unix2dos) items+=(--putenv -E)
[[ " ${COMP_WORDS[@]} " != *" --no-wait-stdout "* &&
" ${COMP_WORDS[@]} " != *" --wait-stdout "* ]] &&
items+=(--no-wait-stdout --wait-stdout)
[[ " ${COMP_WORDS[@]} " != *" --no-wait-stderr"* &&
" ${COMP_WORDS[@]} " != *" --wait-stderr "* ]] &&
items+=(--no-wait-stderr --wait-stderr)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}"
compreply=( $(compgen -w "$result" -- ${cur}) )
;;
start)
items=(--exe --timeout --unquoted-args
--ignore-operhaned-processes --no-profile
--username --domain --passwordfile --password --)
[[ " ${comp_words[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}"
compreply=( $(compgen -w "$result" -- ${cur}) )
;;
copyfrom|copyto)
items=(--dryrun --follow --target-directory
--username --domain)
[[ " ${COMP_WORDS[@]} " != *" --recursive "* &&
" ${COMP_WORDS[@]} " != *" -R "* ]] &&
items+=(--recursive -R)
[[ " ${comp_words[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
copyfrom|copyto|cp)
items=(--username --passwordfile --password createdirectory|createdir|mkdir)
--domain --verbose --dryrun --follow --recursive) items=(--parents --mode --username --domain)
[[ " ${COMP_WORDS[@]} " == *" --password "* || [[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${COMP_WORDS[@]} " == *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items=(--username --domain --verbose --dryrun items+=(--passwordfile --password)
--follow --recursive) [[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
_get_excluded_items "${items[@]}" " ${COMP_WORDS[@]} " != *" -v "* ]] &&
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) items+=(--verbose -v)
;; [[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
createdirectory|createdir|mkdir|md) " ${COMP_WORDS[@]} " != *" -q "* ]] &&
items=(--username --passwordfile --password items+=(--quiet -q)
--domain --verbose --parents --mode)
[[ " ${COMP_WORDS[@]} " == *" --password "* ||
" ${COMP_WORDS[@]} " == *" --passwordfile "* ]] &&
items=(--username --domain --verbose --parents
--mode)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
removedir|removedirectory|rmdir) removedir|removedirectory|rmdir)
items=(--username --domain --verbose) items=(--username --domain)
[[ " ${COMP_WORDS[@]} " != *" --password "* && [[ " ${COMP_WORDS[@]} " != *" --password "* &&
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --recursive "* && [[ " ${COMP_WORDS[@]} " != *" --recursive "* &&
" ${COMP_WORDS[@]} " != *" -R "* && " ${COMP_WORDS[@]} " != *" -R "* ]] &&
" ${COMP_WORDS[@]} " != *" -r "* ]] && items+=(--recursive -R)
items+=(--recursive -R -r) [[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
removefile|rm|rename|ren|mv)
items=(--username --domain --verbose) removefile|rm)
items=(--username --domain)
[[ " ${COMP_WORDS[@]} " != *" --force "* &&
" ${COMP_WORDS[@]} " != *" -f "* ]] &&
items+=(--force -f)
[[ " ${COMP_WORDS[@]} " != *" --password "* && [[ " ${COMP_WORDS[@]} " != *" --password "* &&
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
rename|ren|move|mv)
items=(--username --domain)
[[ " ${COMP_WORDS[@]} " != *" --password "* &&
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
createtemporary|createtemp|mktemp) createtemporary|createtemp|mktemp)
items=(--username --domain --verbose --directory items=(--username --domain --secure --tmpdir --mode)
--secure --tmpdir --mode)
[[ " ${COMP_WORDS[@]} " != *" --password "* && [[ " ${COMP_WORDS[@]} " != *" --password "* &&
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
list) list)
items=(--verbose) items=()
[[ " ${COMP_WORDS[@]} " != *" all "* && [[ " ${COMP_WORDS[@]} " != *" all "* &&
" ${COMP_WORDS[@]} " != *" sessions "* && " ${COMP_WORDS[@]} " != *" sessions "* &&
" ${COMP_WORDS[@]} " != *" processes "* && " ${COMP_WORDS[@]} " != *" processes "* &&
" ${COMP_WORDS[@]} " != *" files "* ]] && " ${COMP_WORDS[@]} " != *" files "* ]] &&
items+=(all sessions processes files) items+=(all sessions processes files)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
closeprocess)
items=()
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
[[ " ${COMP_WORDS[@]} " != *" --session-id "* ]] &&
items+=(--session-name)
[[ " ${COMP_WORDS[@]} " != *" --session-name "* ]] &&
items+=(--session-id)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
closesession)
items=()
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
[[ " ${COMP_WORDS[@]} " != *" --session-id "* &&
" ${COMP_WORDS[@]} " != *" --session-name "* &&
" ${COMP_WORDS[@]} " != *" --all "* ]] &&
items+=(--session-id --session-name --all)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
process) process)
if [[ " ${COMP_WORDS[@]} " == *" process kill "* ]]; if [[ " ${COMP_WORDS[@]} " == *" process kill "* ]];
then then
@@ -986,18 +1226,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
pskill|pkill|kill)
items=(--verbose)
[[ " ${COMP_WORDS[@]} " != *" --session-name "* &&
" ${COMP_WORDS[@]} " != *" --session-id "* ]] &&
items+=(--session-id --session-name)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
session)
_get_excluded_items "close"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
stat) stat)
if [[ "${cur}" == "stat" ]]; then if [[ "${cur}" == "stat" ]]; then
COMPREPLY=( $(compgen -- ${cur}) ) COMPREPLY=( $(compgen -- ${cur}) )
@@ -1006,16 +1235,38 @@ _VBoxManage() {
[[ " ${COMP_WORDS[@]} " != *" --password "* && [[ " ${COMP_WORDS[@]} " != *" --password "* &&
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
updateadditions) updatega|updateguestadditions|updateadditions)
items=(--source --verbose --wait-start) items=(--source --wait-start)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
watch) watch)
items=()
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
items+=(--verbose -v)
[[ " ${COMP_WORDS[@]} " != *" --quiet "* &&
" ${COMP_WORDS[@]} " != *" -q "* ]] &&
items+=(--quiet -q)
_get_excluded_items "--verbose" _get_excluded_items "--verbose"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
@@ -1051,6 +1302,7 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
guestproperty) guestproperty)
items=(get set delete unset enumerate wait) items=(get set delete unset enumerate wait)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -1082,6 +1334,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
hostonlyif) hostonlyif)
items=(ipconfig create remove) items=(ipconfig create remove)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -1115,6 +1368,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
import) import)
items=(--options) items=(--options)
if [[ "${prev}" == "import" ]]; then if [[ "${prev}" == "import" ]]; then
@@ -1123,8 +1377,8 @@ _VBoxManage() {
else else
case "${prev}" in case "${prev}" in
--options) --options)
COMPREPLY=( $(compgen -W "keepallmacs keepnatmacs" \ COMPREPLY=( $(compgen -W "keepallmacs keepnatmacs
-- ${cur}) ) importtovdi" -- ${cur}) )
;; ;;
esac esac
[[ " ${COMP_WORDS[@]} " != *" --dry-run"* && [[ " ${COMP_WORDS[@]} " != *" --dry-run"* &&
@@ -1137,6 +1391,7 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
list) list)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_list_comp ${cur} _list_comp ${cur}
@@ -1151,6 +1406,22 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
mediumproperty)
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
else
case "${prev}" in
disk|dvd|floppy)
COMPREPLY=( $(compgen -W "get set delete" -- ${cur}) )
;;
get|set|floppy)
_get_medium
;;
esac
fi
;;
metrics) metrics)
items=(list setup query enable disable collect) items=(list setup query enable disable collect)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -1207,30 +1478,46 @@ _VBoxManage() {
fi fi
;; ;;
modifyhd)
modifymedium)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_hdd_comp COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
else else
_find_item_name 2
items=(--type --autoreset --property --compact --resize)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in case "${prev}" in
--type) disk)
COMPREPLY=( $(compgen -W "normal writethrough immutable _hdd_comp
shareable readonly multiattach" -- ${cur}) )
;; ;;
--autoreset) dvd)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) _dvds_comp
;; ;;
floppy)
_floppy_comp
;;
*)
_find_item_name 2
items=(--type --autoreset --property --compact --resize)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in
--type)
COMPREPLY=( $(compgen -W "normal writethrough
immutable shareable readonly multiattach" --\
${cur}) )
;;
--autoreset)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
esac
;;
esac esac
fi fi
;; ;;
modifyvm) modifyvm)
items=(--name --groups --description --ostype --iconfile --memory items=(--name --groups --description --ostype --iconfile --memory
--pagefusion --vram --acpi --pciattach --pcidetach --ioapic --hpet --pagefusion --vram --acpi --pciattach --pcidetach --ioapic --hpet
--triplefaultreset --hwvirtex --nestedpaging --largepages --vtxvpid --triplefaultreset --hwvirtex --nestedpaging --largepages --vtxvpid
--vtxux --pae --longmode --synthcpu --cpuidset --cpuidremove --vtxux --pae --longmode --cpuidset --cpuidremove
--cpuidremoveall --hardwareuuid --cpus --cpuhotplug --plugcpu --cpuidremoveall --hardwareuuid --cpus --cpuhotplug --plugcpu
--unplugcpu --cpuexecutioncap --rtcuseutc --graphicscontroller --unplugcpu --cpuexecutioncap --rtcuseutc --graphicscontroller
--monitorcount --accelerate3d --accelerate2dvideo --firmware --monitorcount --accelerate3d --accelerate2dvideo --firmware
@@ -1294,9 +1581,11 @@ _VBoxManage() {
--teleporter --teleporterport --teleporteraddress --teleporter --teleporterport --teleporteraddress
--teleporterpassword --teleporterpasswordfile --tracing-enabled --teleporterpassword --teleporterpasswordfile --tracing-enabled
--tracing-config --tracing-allow-vm-access --usbcardreader --tracing-config --tracing-allow-vm-access --usbcardreader
--autostart-enabled --autostart-delay --vcpenabled --vcpscreens --autostart-enabled --autostart-delay --videocap --videocapscreens
--vcpfile --vcpwidth --vcpheight --vcprate --vcpfps --videocapfile --videocapres --videocaprate --videocapfps
--defaultfrontend) --videocapmaxtime --videocapmaxsize --videocapopts --defaultfrontend
--cpuid-portability-level --paravirtprovider --audiocodec --usbxhci
--usbrename)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
@@ -1314,7 +1603,7 @@ _VBoxManage() {
;; ;;
--pagefusion|--acpi|--ioapic|--hpet|--triplefaultreset|\ --pagefusion|--acpi|--ioapic|--hpet|--triplefaultreset|\
--hwvirtex|--nestedpaging|--largepages|--vtxvpid|--vtxux|\ --hwvirtex|--nestedpaging|--largepages|--vtxvpid|--vtxux|\
--pae|--longmode|--synthcpu|--cpuhotplug|--rtcuseutc|\ --pae|--longmode|--cpuhotplug|--rtcuseutc|\
--accelerate3d|--accelerate2dvideo|--bioslogofadein|\ --accelerate3d|--accelerate2dvideo|--bioslogofadein|\
--bioslogofadeout|--biospxedebug|--cableconnected1|\ --bioslogofadeout|--biospxedebug|--cableconnected1|\
--cableconnected2|--cableconnected3|--cableconnected4|\ --cableconnected2|--cableconnected3|--cableconnected4|\
@@ -1333,7 +1622,7 @@ _VBoxManage() {
--vrdemulticon|--vrdereusecon|--vrdevideochannel|--usb|\ --vrdemulticon|--vrdereusecon|--vrdevideochannel|--usb|\
--usbehci|--teleporter|--tracing-enabled|\ --usbehci|--teleporter|--tracing-enabled|\
--tracing-allow-vm-access|--usbcardreader|\ --tracing-allow-vm-access|--usbcardreader|\
--autostart-enabled|--vcpenabled) --autostart-enabled|--videocap|--usbxhci)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
--graphicscontroller) --graphicscontroller)
@@ -1420,7 +1709,7 @@ _VBoxManage() {
;; ;;
--uartmode[1-2]) --uartmode[1-2])
COMPREPLY+=( $(compgen -W "disconnected server client COMPREPLY+=( $(compgen -W "disconnected server client
file" -- ${cur}) ) tcpserver tcpclient file" -- ${cur}) )
;; ;;
--audio) --audio)
COMPREPLY+=( $(compgen -W "none null oss alsa pulse" \ COMPREPLY+=( $(compgen -W "none null oss alsa pulse" \
@@ -1431,6 +1720,11 @@ _VBoxManage() {
COMPREPLY+=( $(compgen -W "ac97 hda sb16" -- ${cur}) ) COMPREPLY+=( $(compgen -W "ac97 hda sb16" -- ${cur}) )
;; ;;
--audiocodec)
COMPREPLY+=( $(compgen -W "stac9700 ad1980 stac9221
sb16" -- ${cur}) )
;;
--clipboard) --clipboard)
COMPREPLY+=( $(compgen -W "disabled hosttoguest COMPREPLY+=( $(compgen -W "disabled hosttoguest
guesttohost bidirectional" -- ${cur}) ) guesttohost bidirectional" -- ${cur}) )
@@ -1448,9 +1742,17 @@ _VBoxManage() {
COMPREPLY+=( $(compgen -W "null external guest" \ COMPREPLY+=( $(compgen -W "null external guest" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--paravirtprovider)
COMPREPLY=( $(compgen -W "none default legacy minimal
hyperv kvm" -- ${cur}) )
;;
--cpuid-portability-level)
COMPREPLY=( $(compgen -W "0 1 2 3" -- ${cur}) )
;;
esac esac
fi fi
;; ;;
natnetwork) natnetwork)
items=(add remove modify start stop) items=(add remove modify start stop)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -1481,6 +1783,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
registervm) registervm)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
bind 'set mark-directories on' bind 'set mark-directories on'
@@ -1491,12 +1794,14 @@ _VBoxManage() {
COMPREPLY[0]="${COMPREPLY[0]}/" COMPREPLY[0]="${COMPREPLY[0]}/"
fi fi
;; ;;
setextradata) setextradata)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "global" -- ${cur}) ) COMPREPLY=( $(compgen -W "global" -- ${cur}) )
_vms_comp vms _vms_comp vms
fi fi
;; ;;
setproperty) setproperty)
items=(machinefolder hwvirtexclusive vrdeauthlibrary items=(machinefolder hwvirtexclusive vrdeauthlibrary
websrvauthlibrary vrdeextpack autostartdbpath loghistorycount websrvauthlibrary vrdeextpack autostartdbpath loghistorycount
@@ -1530,6 +1835,7 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
sharedfolder) sharedfolder)
items=(add remove) items=(add remove)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
@@ -1566,11 +1872,32 @@ _VBoxManage() {
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
;; ;;
showhdinfo) showmediuminfo)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
_hdd_comp _hdd_comp
_dvds_comp
_floppy_comp
else
case "${prev}" in
disk)
_hdd_comp
;;
dvd)
_dvds_comp
;;
floppy)
_floppy_comp
;;
*)
items=(--delete)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac
fi fi
;; ;;
showvminfo) showvminfo)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
@@ -1589,6 +1916,7 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
snapshot) snapshot)
items=(take delete restore restorecurrent edit list showvminfo) items=(take delete restore restorecurrent edit list showvminfo)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
@@ -1599,7 +1927,7 @@ _VBoxManage() {
if [[ " ${items[@]} " == *" $subcommand "* ]]; then if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in case "${subcommand}" in
take) take)
items=(--description --live) items=(--description --live --uniquename)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
@@ -1632,17 +1960,19 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
startvm) startvm)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms 1 _vms_comp vms 1
elif [[ "${prev}" == "--type" ]]; then elif [[ "${prev}" == "--type" ]]; then
COMPREPLY=( $(compgen -W "gui sdl headless" -- ${cur}) ) COMPREPLY=( $(compgen -W "gui sdl headless separate" -- ${cur}) )
else else
local items=(--type) local items=(--type)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
storageattach) storageattach)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
@@ -1650,9 +1980,9 @@ _VBoxManage() {
_find_item_name 2 _find_item_name 2
local items=(--storagectl --port --device --type --medium --mtype local items=(--storagectl --port --device --type --medium --mtype
--comment --setuuid --setparentuuid --passthrough --tempeject --comment --setuuid --setparentuuid --passthrough --tempeject
--nonrotational --discard --bandwidthgroup --forceunmount --nonrotational --discard --hotpluggable --bandwidthgroup
--server --target --tport --lun --encodedlun --username --forceunmount --server --target --tport --lun --encodedlun
--password --initiator --intnet) --username --password --initiator --intnet)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
@@ -1681,9 +2011,10 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
storagectl) storagectl)
local items=(--name --add --controller --portcount --hostiocache local items=(--name --add --controller --portcount --hostiocache
--bootable --remove) --bootable --rename --remove)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
else else
@@ -1704,6 +2035,7 @@ _VBoxManage() {
esac esac
fi fi
;; ;;
unregistervm) unregistervm)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
@@ -1713,7 +2045,8 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
usbfilter)
usbfilte)
if [[ COMP_CWORD -ge 3 ]]; then if [[ COMP_CWORD -ge 3 ]]; then
subcommand="${COMP_WORDS[2]}" subcommand="${COMP_WORDS[2]}"
if [[ $subcommand == "${cmd}" ]]; then if [[ $subcommand == "${cmd}" ]]; then
@@ -1757,5 +2090,6 @@ _VBoxManage() {
esac esac
} }
complete -o default -F _VBoxManage VBoxManage complete -o default -F _VBoxManage VBoxManage
complete -o default -F _VBoxManage vboxmanage
# vim: set ft=sh tw=80 sw=4 et : # vim: set ft=sh tw=80 sw=4 et :