14 Commits

Author SHA1 Message Date
d4f56a0d6b Added unattended command. 2018-09-09 15:58:14 +02:00
f8b5981935 Corrected file/dir completions. 2018-09-08 17:41:02 +02:00
d027094e7c Added new options for commands.
In version 5.2.14 of VirtualBox, new options for following commands has
been added. Adjusted completion accordingly.

- list (-s|--sorted)
- modifyvm (--cpiudset -> --cpuid-set, --cpuidremove -> --cpuid-remove,
  --audioin, --audioout)
- export (new file format choice: --opc10)
- startvm (-E|--putenv)
- conrolvm (keyboardputstring, keyboardputfile, audioin, audioout)
- storageattach (--passwordfile)
- modifymedium (--description)
2018-09-08 16:47:50 +02:00
e90270e8ee Added speculation control to modifyvm command 2018-05-27 17:56:19 +02:00
11a0844c4d Added two new options for modifyvm
New options was added to VBoxManage in verstion 5.1.32:

* --ibpb-on-vm-exit
* --ibpb-on-vm-entry
2018-01-24 19:10:45 +01:00
9b06c430fd Added new subcommand for debugvm
VBoxManage removed "debug" from list of commands in help, leaving only
description for "debugvm" in section "Introspection and guest debugging"
below all of the list, so that it is needed for adding "debugvm" to the
list of available commands manually.

Also "stack", new subcommand was added to "debugvm".
2017-10-08 10:20:27 +02:00
fbdd259cac Added support for usbdevsource command 2017-10-08 09:11:20 +02:00
d79a8bc280 Whitespaces housekeeping 2017-10-08 09:03:11 +02:00
20b1ef9fab Fix for catching usbfilter command 2017-10-08 09:01:25 +02:00
1674acbe92 Aded 'list' for natnetwork command 2017-10-07 19:29:22 +02:00
9b7ab10421 Command modifymedium have now additional option --move 2017-10-07 19:28:22 +02:00
47e3ff6bbe Added more options for storagectl option
options --add and --controller now have additional options:

usb
pcie

for `--add` and

USB
NVMe

for `--controller'.
2017-10-07 19:26:17 +02:00
f81bfe514f Modified 'modifyvm' command
Added new options for modifyvm command:

--apic
--x2apic
--paravirtdebug
--cpu-profile
--biosapic
2017-10-07 19:22:28 +02:00
a78a03286a Changed option '--no-profile' to '--profile' in gustecontrol run command 2017-10-07 19:21:36 +02:00
2 changed files with 213 additions and 41 deletions

View File

@@ -6,7 +6,7 @@ script. However, in some point of time I've decided to rewrite it almost from
scratch.
Current version of script was written and tested against VBoxManage in version
5.0.40, and supports all commands (in some extent ;)).
5.2.14, and supports all commands (in some extent ;)).
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:

View File

@@ -4,6 +4,7 @@
# 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)
# Version: 5.2.14
_VBoxManage() {
local cur prev opts cmd subcommand tmp items name index result
@@ -41,6 +42,18 @@ _VBoxManage() {
done
}
_is_any_item_used() {
local i
result=""
for i in $@; do
if [[ " ${COMP_WORDS[@]} " == *" $i "* ]]; then
result="ITIS"
break
fi
done
}
# Generate registered hard disk files.
# NOTE: This function may introduce some quirks, if there is a space or
# other characters which usually are treated as IFS - like space. Pipe
@@ -440,6 +453,10 @@ _VBoxManage() {
sort | \
uniq)
# add debugvm command manually, since it's described differently in
# vboxmanage help
opts="${opts} debugvm unattended"
if [[ ${cur} == "-q" || ${COMP_CWORD} -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
@@ -499,6 +516,7 @@ _VBoxManage() {
fi
fi
;;
checkmediumpwd)
if [[ ${prev} == ${cmd} ]]; then
_hdd_comp
@@ -623,15 +641,15 @@ _VBoxManage() {
vrdevideochannelquality webcam videocap videocapscreens
videocapfile videocapres videocaprate videocapfps
videocapmaxtime videocapmaxsize addencpassword removeencpassword
removeallencpasswords)
removeallencpasswords keyboardputstring keyboardputfile audioin
audioout)
_find_item_name 2
subcommand=${COMP_WORDS[$((index+1))]}
if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in
nictracefile[1-8])
videocapfile|keyboardputfile|nictracefile[1-8])
[[ ${prev} == "nictracefile"* ]] && \
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
@@ -654,7 +672,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "delete tcp
udp" -- ${cur}) )
;;
setlinkstate[1-8])
audioin|audioout|setlinkstate[1-8])
[[ ${prev} == "setlinkstate"* ]] && \
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
@@ -702,11 +720,9 @@ _VBoxManage() {
_get_excluded_items "${tmp[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
--removeonsuspend)
COMPREPLY=( $(compgen -W "yes no" -- ${cur}) )
;;
addencpassword)
tmp=(--host --port --maxdowntime --passwordfile
--password)
@@ -714,6 +730,8 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac
elif [[ ${prev} == "--passwordfile" || ${prev} == "--capturefile" ]]; then
COMPREPLY=( $(compgen -f -- ${cur}) )
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
@@ -759,7 +777,7 @@ _VBoxManage() {
case "${prev}" in
--filename)
COMPREPLY=( $(compgen -- ${cur}) )
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--diffparent)
COMPREPLY=()
@@ -807,9 +825,9 @@ _VBoxManage() {
fi
;;
debugvm)
"debugvm")
items=(dumpguestcore info injectnmi log logdest logflags osdetect
osinfo osdmesg getregisters setregisters show statistics)
osinfo osdmesg getregisters setregisters show statistics stack)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp runningvms
else
@@ -826,7 +844,7 @@ _VBoxManage() {
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
getregisters|setregisters)
getregisters|setregisters|stack)
_get_excluded_items "--cpu"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
@@ -837,7 +855,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
statistics)
items=(--reset --pattern)
items=(--reset --pattern --descriptions)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
@@ -850,11 +868,10 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac
_get_excluded_items "--descriptions"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
else
[[ "${prev}" == "--filename" ]] && \
COMPREPLY=( $(compgen -- ${cur}) )
COMPREPLY=( $(compgen -f -- ${cur}) )
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi
@@ -921,7 +938,6 @@ _VBoxManage() {
else
COMPREPLY=( $(compgen -W "--newpassword --oldpassword --cipher
--newpasswordid" -- ${cur}) )
fi
;;
@@ -929,6 +945,8 @@ _VBoxManage() {
items=( --manifest --iso --options --vsys)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms
elif [[ ${prev} == "--eulafile" ]]; then
COMPREPLY=( $(compgen -f -- ${cur}) )
else
[[ " ${COMP_WORDS[@]} " != *" -o "* &&
" ${COMP_WORDS[@]} " != *" --output "* ]] &&
@@ -936,8 +954,9 @@ _VBoxManage() {
[[ " ${COMP_WORDS[@]} " != *" --legacy09 "* &&
" ${COMP_WORDS[@]} " != *" --ovf09 "* &&
" ${COMP_WORDS[@]} " != *" --ovf10 "* &&
" ${COMP_WORDS[@]} " != *" --ovf20 "* ]] &&
items+=(--legacy09 --ovf09 --ovf10 --ovf20)
" ${COMP_WORDS[@]} " != *" --ovf20 "* &&
" ${COMP_WORDS[@]} " != *" --opc20 "* ]] &&
items+=(--legacy09 --ovf09 --ovf10 --ovf20 --opc10)
[[ " ${COMP_WORDS[@]} " == *" --vsys "* ]] &&
items+=(--product --producturl --vendor --vendorurl
--version --description --eula --eulafile)
@@ -1007,7 +1026,7 @@ _VBoxManage() {
case "${subcommand}" in
run)
items=(--exe --timeout --unquoted-args
--ignore-operhaned-processes --no-profile
--ignore-operhaned-processes --profile
--dos2unix --unix2dos --username --domain --)
[[ " ${comp_words[@]} " != *" --password "* ||
@@ -1035,7 +1054,7 @@ _VBoxManage() {
start)
items=(--exe --timeout --unquoted-args
--ignore-operhaned-processes --no-profile
--ignore-operhaned-processes --profile
--username --domain --passwordfile --password --)
[[ " ${comp_words[@]} " != *" --password "* ||
@@ -1246,6 +1265,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
;;
updatega|updateguestadditions|updateadditions)
items=(--source --wait-start)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
@@ -1258,6 +1278,7 @@ _VBoxManage() {
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
watch)
items=()
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
@@ -1271,6 +1292,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac
case "${prev}" in
close)
items=(--verbose)
@@ -1284,7 +1306,7 @@ _VBoxManage() {
--image)
COMPREPLY=( $(compgen -- ${cur}) )
;;
--tmpdir)
--target-directory|--tmpdir)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;;
--source)
@@ -1295,6 +1317,9 @@ _VBoxManage() {
"${COMPREPLY[0]}" != *".iso" ]] && \
COMPREPLY[0]="${COMPREPLY[0]}/"
;;
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
@@ -1397,11 +1422,14 @@ _VBoxManage() {
_list_comp ${cur}
else
case "${prev}" in
--sorted|-s)
COMPREPLY=( $(compgen -W "-l --long" -- ${cur}) )
;;
--long|-l)
COMPREPLY=()
COMPREPLY=( $(compgen -W "-s --sorted" -- ${cur}) )
;;
*)
COMPREPLY=( $(compgen -W "-l --long" -- ${cur}) )
COMPREPLY=( $(compgen -W "-l --long -s --sorted" -- ${cur}) )
;;
esac
fi
@@ -1469,14 +1497,12 @@ _VBoxManage() {
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
;;
esac
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi
;;
modifymedium)
@@ -1495,7 +1521,8 @@ _VBoxManage() {
;;
*)
_find_item_name 2
items=(--type --autoreset --property --compact --resize)
items=(--type --autoreset --property --compact --resize
--move --description)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in
@@ -1507,6 +1534,9 @@ _VBoxManage() {
--autoreset)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
--move)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;;
esac
;;
esac
@@ -1517,7 +1547,7 @@ _VBoxManage() {
items=(--name --groups --description --ostype --iconfile --memory
--pagefusion --vram --acpi --pciattach --pcidetach --ioapic --hpet
--triplefaultreset --hwvirtex --nestedpaging --largepages --vtxvpid
--vtxux --pae --longmode --cpuidset --cpuidremove
--vtxux --pae --longmode --cpuid-set --cpuid-remove
--cpuidremoveall --hardwareuuid --cpus --cpuhotplug --plugcpu
--unplugcpu --cpuexecutioncap --rtcuseutc --graphicscontroller
--monitorcount --accelerate3d --accelerate2dvideo --firmware
@@ -1585,7 +1615,9 @@ _VBoxManage() {
--videocapfile --videocapres --videocaprate --videocapfps
--videocapmaxtime --videocapmaxsize --videocapopts --defaultfrontend
--cpuid-portability-level --paravirtprovider --audiocodec --usbxhci
--usbrename)
--usbrename --apic --x2apic --paravirtdebug --cpu-profile
--biosapic --videocapopts --ibpb-on-vm-entry --ibpb-on-vm-exit
--spec-ctrl --audioin --audioout)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms
@@ -1597,10 +1629,12 @@ _VBoxManage() {
COMPREPLY=()
_group_comp
;;
--ostype)
COMPREPLY=()
_os_comp
;;
--pagefusion|--acpi|--ioapic|--hpet|--triplefaultreset|\
--hwvirtex|--nestedpaging|--largepages|--vtxvpid|--vtxux|\
--pae|--longmode|--cpuhotplug|--rtcuseutc|\
@@ -1622,73 +1656,91 @@ _VBoxManage() {
--vrdemulticon|--vrdereusecon|--vrdevideochannel|--usb|\
--usbehci|--teleporter|--tracing-enabled|\
--tracing-allow-vm-access|--usbcardreader|\
--autostart-enabled|--videocap|--usbxhci)
--autostart-enabled|--videocap|--usbxhci|--apic|--x2apic|\
--ibpb-on-vm-entry|--ibpb-on-vm-exit|--spec-ctrl|--audioin|\
--audioout)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
--graphicscontroller)
COMPREPLY=( $(compgen -W "none vboxvga vmsvga" \
-- ${cur}) )
;;
--firmware)
COMPREPLY=( $(compgen -W "bios efi efi32 efi64" \
-- ${cur}) )
;;
--chipset)
COMPREPLY=( $(compgen -W "ich9 piix3" -- ${cur}) )
;;
--biosbootmenu)
COMPREPLY=( $(compgen -W "disabled menuonly
messageandmenu" -- ${cur}) )
;;
--boot[1-4])
COMPREPLY=( $(compgen -W "none floppy dvd disk net" \
-- ${cur}) )
;;
--nic[1-8])
COMPREPLY=( $(compgen -W "none null nat bridged intnet
hostonly generic natnetwork" -- ${cur}) )
;;
--nictype[1-8])
COMPREPLY=( $(compgen -W "Am79C970A Am79C973 82540EM
82543GC 82545EM virtio" -- ${cur}) )
;;
--nicpromisc[1-8])
COMPREPLY=( $(compgen -W "deny allow-vms allow-all" \
-- ${cur}) )
;;
--nicbandwidthgroup[1-8])
COMPREPLY=()
_bandwidthctl_comp
_get_excluded_items "none"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
;;
--bridgeadapter[1-8])
COMPREPLY=()
_bridgedif_comp
_get_excluded_items "none"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
;;
--hostonlyadapter[1-8])
COMPREPLY=()
_hostonlyif_comp
_get_excluded_items "none"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
;;
--intnet[1-8])
COMPREPLY=()
_intnet_comp
;;
--nat-network[1-8])
COMPREPLY=()
_natnet_comp
;;
--natnet[1-8])
COMPREPLY=()
_natnet_comp
;;
--natpf[1-8])
COMPREPLY+=( $(compgen -W "delete" -- ${cur}) )
;;
--nataliasmode[1-8])
COMPREPLY+=( $(compgen -W "default" -- ${cur}) )
;;
@@ -1696,10 +1748,12 @@ _VBoxManage() {
--macaddress[1-8])
COMPREPLY+=( $(compgen -W "auto" -- ${cur}) )
;;
--mouse)
COMPREPLY+=( $(compgen -W "ps2 usb usbtablet
usbmultitouch" -- ${cur}) )
;;
--keyboard)
COMPREPLY+=( $(compgen -W "ps2 usb" -- ${cur}) )
;;
@@ -1707,10 +1761,12 @@ _VBoxManage() {
--uart[1-2]|--lpt[1-2])
COMPREPLY+=( $(compgen -W "off" -- ${cur}) )
;;
--uartmode[1-2])
COMPREPLY+=( $(compgen -W "disconnected server client
tcpserver tcpclient file" -- ${cur}) )
;;
--audio)
COMPREPLY+=( $(compgen -W "none null oss alsa pulse" \
-- ${cur}) )
@@ -1729,6 +1785,7 @@ _VBoxManage() {
COMPREPLY+=( $(compgen -W "disabled hosttoguest
guesttohost bidirectional" -- ${cur}) )
;;
--draganddrop)
COMPREPLY+=( $(compgen -W "disabled hosttoguest" \
-- ${cur}) )
@@ -1738,23 +1795,45 @@ _VBoxManage() {
--defaultfrontend)
COMPREPLY+=( $(compgen -W "default" -- ${cur}) )
;;
--vrdeauthtype)
COMPREPLY+=( $(compgen -W "null external guest" \
-- ${cur}) )
;;
--paravirtprovider)
COMPREPLY=( $(compgen -W "none default legacy minimal
hyperv kvm" -- ${cur}) )
;;
--cpuid-portability-level)
COMPREPLY=( $(compgen -W "0 1 2 3" -- ${cur}) )
;;
--cpu-profile)
COMPREPLY=( $(compgen -W "host 8086 80286 80386" \
-- ${cur}) )
;;
--biosapic)
COMPREPLY=( $(compgen -W "disabled apic x2apic" \
-- ${cur}) )
;;
--teleporterpasswordfile|--iconfile|--videocapfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--nictracefile[1-8])
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--nattftpfile[1-8])
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
fi
;;
natnetwork)
items=(add remove modify start stop)
items=(add remove modify start stop list)
subcommand=${COMP_WORDS[2]}
if [[ "${prev}" == "--netname" ]]; then
_natnet_comp
@@ -1872,6 +1951,7 @@ _VBoxManage() {
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
;;
showmediuminfo)
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
@@ -1967,7 +2047,13 @@ _VBoxManage() {
elif [[ "${prev}" == "--type" ]]; then
COMPREPLY=( $(compgen -W "gui sdl headless separate" -- ${cur}) )
else
local items=(--putenv -E)
_is_any_item_used "${items[@]}"
if [[ "${result}" == "ITIS" ]]; then
local items=(--type)
else
local items=(--type -E --putenv)
fi
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
@@ -1982,7 +2068,7 @@ _VBoxManage() {
--comment --setuuid --setparentuuid --passthrough --tempeject
--nonrotational --discard --hotpluggable --bandwidthgroup
--forceunmount --server --target --tport --lun --encodedlun
--username --password --initiator --intnet)
--username --password --initiator --intnet --passwordfile)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
@@ -2008,6 +2094,9 @@ _VBoxManage() {
--passthrough|--tempeject|--nonrotational|--discard)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
fi
;;
@@ -2023,11 +2112,11 @@ _VBoxManage() {
case "${prev}" in
--add)
COMPREPLY=( $(compgen -W "ide sata scsi floppy
sas" -- ${cur}) )
sas usb pcie" -- ${cur}) )
;;
--controller)
COMPREPLY=( $(compgen -W "LSILogic LSILogicSAS BusLogic
IntelAHCI PIIX3 PIIX4 ICH6 I82078" -- ${cur}) )
IntelAHCI PIIX3 PIIX4 ICH6 I82078 USB NVMe" -- ${cur}) )
;;
--bootable|--hostiocache)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
@@ -2046,7 +2135,7 @@ _VBoxManage() {
fi
;;
usbfilte)
usbfilter)
if [[ COMP_CWORD -ge 3 ]]; then
subcommand="${COMP_WORDS[2]}"
if [[ $subcommand == "${cmd}" ]]; then
@@ -2087,6 +2176,89 @@ _VBoxManage() {
fi
fi
;;
usbdevsource)
if [[ COMP_CWORD -ge 3 ]]; then
subcommand="${COMP_WORDS[2]}"
if [[ $subcommand == "${cmd}" ]]; then
subcommand="${COMP_WORDS[3]}"
fi
fi
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "add remove" -- ${cur}) )
else
if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
case "${subcommand}" in
add)
local items=(--address --backend)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac
fi
fi
;;
unattended)
if [[ COMP_CWORD -ge 3 ]]; then
subcommand="${COMP_WORDS[2]}"
if [[ $subcommand == "${cmd}" ]]; then
subcommand="${COMP_WORDS[3]}"
fi
fi
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "detect install" -- ${cur}) )
else
case "${prev}" in
--iso|--password-file|--additions-iso|--validation-kit-iso|\
--script-template|--post-install-template)
COMPREPLY+=( $(compgen -f -- ${cur}) )
;;
--auxiliary-base-path)
COMPREPLY+=( $(compgen -o dirnames -- ${cur}) )
;;
--start-vm)
COMPREPLY=( $(compgen -W "gui sdl headless separate" \
-- ${cur}) )
;;
esac
if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
case "${subcommand}" in
detect)
local items=(--iso --machine-readable)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
install)
if [[ ${prev} == ${subcommand} ]]; then
_vms_comp vms
else
local items=(--iso --user=login
--password=password --password-file
--full-user-name --key
--install-additions --no-install-additions
--additions-iso --install-txs --no-install-txs
--validation-kit-iso --locale --country
--time-zone --hostname
--package-selection-adjustment --dry-run
--auxiliary-base-path=path --image-index
--script-template --post-install-template
--post-install-command
--extra-install-kernel-parameters --language
--start-vm)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi
;;
esac
fi
fi
;;
esac
}
complete -o default -F _VBoxManage VBoxManage