26 Commits

Author SHA1 Message Date
c8301459df Command extapck will be available on topmost completion again. 2019-12-22 19:06:05 +01:00
ab0cc7aea4 Fixes for modifyvm options completion. 2019-12-22 19:03:09 +01:00
f73e80c7ad Fixed list command 2019-12-22 19:03:09 +01:00
10900543fa Bump to version 6.0.12.
Changed videocap to recording in modifyvm and controlvm, changed from
usb to usbohci in modifyvm command, added new movevm and mediumio
commands and cloud related options.
2019-12-22 19:02:50 +01:00
1be3e589d4 Bump to 5.2.32 version 2019-09-16 07:24:42 +02:00
9c5b048c62 Bump to 5.2.26
Added guesttohost and bidirectional parameters for --draganddrop option
for both: controlvm and modifyvm.
2019-04-23 19:14:39 +02:00
5fd18d7cec Removed redundant --videocapopts from modifyvm 2019-04-23 19:14:39 +02:00
05af06f337 Merge pull request #7 from schplurtz/comp_words
change comp_words to upper case
2019-02-19 19:21:21 +01:00
cde78c8e4c Merge pull request #6 from schplurtz/snaplist
handle snapshot completion entirely with awk
2019-02-19 19:19:39 +01:00
Schplurtz le Déboulonné
197c46cd35 change comp_words to upper case 2019-02-19 10:58:37 +01:00
Christophe Martin
296be19560 handle snapshot completion entirely with awk
fixes #5
Also list and complete snapshot uuid.
2019-02-19 10:41:23 +01:00
62f57ebbb7 Added level 1 data cache options.
New options are added to modifyvm command:
- --l1d-flush-on-sched
- --l1d-flush-on-vm-entry
2018-11-28 20:21:06 +01:00
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 365 additions and 101 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
5.0.40, and supports all commands (in some extent ;)). 6.0.12, and should contain all commands and their options.
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

@@ -4,6 +4,7 @@
# URL: https://bitbucket.org/gryf/vboxmanage-bash-completion # URL: https://bitbucket.org/gryf/vboxmanage-bash-completion
# URL: https://github.com/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)
# Version: 6.0.12
_VBoxManage() { _VBoxManage() {
local cur prev opts cmd subcommand tmp items name index result local cur prev opts cmd subcommand tmp items name index result
@@ -41,6 +42,18 @@ _VBoxManage() {
done 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. # Generate registered hard disk files.
# NOTE: This function may introduce some quirks, if there is a space or # NOTE: This function may introduce some quirks, if there is a space or
# other characters which usually are treated as IFS - like space. Pipe # other characters which usually are treated as IFS - like space. Pipe
@@ -258,11 +271,14 @@ _VBoxManage() {
snap=$(VBoxManage snapshot "${name//\\/}" \ snap=$(VBoxManage snapshot "${name//\\/}" \
list | \ list | \
grep UUID | grep UUID |
awk -F ': ' '{print $2}' | \ awk -F ': *' -v ORS='|' '/UUID: / {
sed 's/ (.*//' | \ n=$2; u=$3
tr '\n' '|' | \ sub(/..UUID/, "", n)
sed 's/|$//' | \ gsub(/ /, "\\ ", n);
sed 's/\s/\\ /g') sub(/[)].*/, "", u)
print n; print u
}'
)
IFS='|' read -ra snap <<< "$snap" IFS='|' read -ra snap <<< "$snap"
for item in "${snap[@]}" for item in "${snap[@]}"
@@ -307,14 +323,10 @@ _VBoxManage() {
_list_comp() { _list_comp() {
local list local list
list=$(VBoxManage list | \ list=$(VBoxManage list | sed -e '1,2d' \
grep '|' | \ -e 's/VBoxManage list //' \
sed 's/\[.*\]//g'| \ -e 's/[\[\]\|]/ /g' \
sed 's/VBoxManage list//' | \ -e 's/|/ /g'|xargs echo)
tr "\\n" " " | \
sed 's/$/\n/' | \
sed 's/\s\+//g' | \
sed 's/|/ /g')
COMPREPLY=( $(compgen -W "$list" -- ${cur}) ) COMPREPLY=( $(compgen -W "$list" -- ${cur}) )
} }
@@ -440,6 +452,10 @@ _VBoxManage() {
sort | \ sort | \
uniq) uniq)
# Add some commands manually, since they are listed differently in
# vboxmanage help.
opts="${opts} mediumio debugvm unattended extpack"
if [[ ${cur} == "-q" || ${COMP_CWORD} -eq 1 ]] ; then if [[ ${cur} == "-q" || ${COMP_CWORD} -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0 return 0
@@ -499,6 +515,7 @@ _VBoxManage() {
fi fi
fi fi
;; ;;
checkmediumpwd) checkmediumpwd)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_hdd_comp _hdd_comp
@@ -562,7 +579,7 @@ _VBoxManage() {
;; ;;
--options) --options)
COMPREPLY=( $(compgen -W "link keepallmacs keepnatmacs COMPREPLY=( $(compgen -W "link keepallmacs keepnatmacs
keepdisknames" -- ${cur}) ) keepdisknames keephwuuids" -- ${cur}) )
;; ;;
--groups) --groups)
COMPREPLY=() COMPREPLY=()
@@ -620,18 +637,17 @@ _VBoxManage() {
setlinkstate3 setlinkstate4 setlinkstate5 setlinkstate6 setlinkstate3 setlinkstate4 setlinkstate5 setlinkstate6
setlinkstate7 setlinkstate8 setvideomodehint teleport unplugcpu setlinkstate7 setlinkstate8 setvideomodehint teleport unplugcpu
usbattach usbdetach vrde vrdeport vrdeproperty usbattach usbdetach vrde vrdeport vrdeproperty
vrdevideochannelquality webcam videocap videocapscreens vrdevideochannelquality webcam recording addencpassword
videocapfile videocapres videocaprate videocapfps removeencpassword removeallencpasswords keyboardputstring
videocapmaxtime videocapmaxsize addencpassword removeencpassword keyboardputfile audioin audioout setscreenlayout changeuartmode1
removeallencpasswords) changeuartmode2)
_find_item_name 2 _find_item_name 2
subcommand=${COMP_WORDS[$((index+1))]} subcommand=${COMP_WORDS[$((index+1))]}
if [[ " ${items[@]} " == *" $subcommand "* ]]; then if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in case "${subcommand}" in
nictracefile[1-8]) keyboardputfile|nictracefile[1-8])
[[ ${prev} == "nictracefile"* ]] && \ [[ ${prev} == "nictracefile"* ]] && \
COMPREPLY=( $(compgen -f -- ${cur}) ) COMPREPLY=( $(compgen -f -- ${cur}) )
;; ;;
@@ -654,7 +670,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "delete tcp COMPREPLY=( $(compgen -W "delete tcp
udp" -- ${cur}) ) udp" -- ${cur}) )
;; ;;
setlinkstate[1-8]) audioin|audioout|setlinkstate[1-8])
[[ ${prev} == "setlinkstate"* ]] && \ [[ ${prev} == "setlinkstate"* ]] && \
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
@@ -665,14 +681,28 @@ _VBoxManage() {
;; ;;
draganddrop) draganddrop)
[[ ${prev} == "draganddrop" ]] && \ [[ ${prev} == "draganddrop" ]] && \
COMPREPLY=( $(compgen -W "disabled COMPREPLY=( $(compgen -W "disabled hosttoguest
hosttoguest" -- ${cur}) ) guesttohost bidirectional" -- ${cur}) )
;; ;;
vrde|videocap) vrde)
[[ ${prev} == "vrde" || [[ ${prev} == "vrde" ]] && \
${prev} == "videocap" ]] && \
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
recording)
[[ ${prev} == "recording" ]] && \
COMPREPLY=( $(compgen -W "on off screens
filename videores videorate videofps maxtime
maxfilesize" -- ${cur}) )
case "${prev}" in
screens)
COMPREPLY=( $(compgen -W "all none
<screen>" -- ${cur}) )
;;
filename)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
;;
videocapscreens) videocapscreens)
[[ ${prev} == "videocapscreens" ]] && \ [[ ${prev} == "videocapscreens" ]] && \
COMPREPLY=( $(compgen -W "all none" -- ${cur}) ) COMPREPLY=( $(compgen -W "all none" -- ${cur}) )
@@ -702,18 +732,24 @@ _VBoxManage() {
_get_excluded_items "${tmp[@]}" _get_excluded_items "${tmp[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
--removeonsuspend) --removeonsuspend)
COMPREPLY=( $(compgen -W "yes no" -- ${cur}) ) COMPREPLY=( $(compgen -W "yes no" -- ${cur}) )
;; ;;
addencpassword) addencpassword)
tmp=(--host --port --maxdowntime --passwordfile tmp=(--host --port --maxdowntime --passwordfile
--password) --password)
_get_excluded_items "${tmp[@]}" _get_excluded_items "${tmp[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
changeuartmode[1-2])
tmp=(disconnected server client tcpserver tcpclient
file "<devicename>")
_get_excluded_items "${tmp[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
esac esac
elif [[ ${prev} == "--passwordfile" || ${prev} == "--capturefile" ]]; then
COMPREPLY=( $(compgen -f -- ${cur}) )
else else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
@@ -759,7 +795,7 @@ _VBoxManage() {
case "${prev}" in case "${prev}" in
--filename) --filename)
COMPREPLY=( $(compgen -- ${cur}) ) COMPREPLY=( $(compgen -f -- ${cur}) )
;; ;;
--diffparent) --diffparent)
COMPREPLY=() COMPREPLY=()
@@ -771,7 +807,7 @@ _VBoxManage() {
;; ;;
--variant) --variant)
COMPREPLY=( $(compgen -W "Standard Fixed Split2G COMPREPLY=( $(compgen -W "Standard Fixed Split2G
Stream ESX" -- ${cur}) ) Stream ESX Formatted" -- ${cur}) )
;; ;;
esac esac
;; ;;
@@ -780,7 +816,8 @@ _VBoxManage() {
;; ;;
createvm) createvm)
items=(--name --groups --ostype --register --basefolder --uuid) items=(--name --groups --ostype --register --basefolder --uuid
--default)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
else else
@@ -807,9 +844,9 @@ _VBoxManage() {
fi fi
;; ;;
debugvm) "debugvm")
items=(dumpguestcore info injectnmi log logdest logflags osdetect 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 if [[ ${prev} == ${cmd} ]]; then
_vms_comp runningvms _vms_comp runningvms
else else
@@ -826,7 +863,7 @@ _VBoxManage() {
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
getregisters|setregisters) getregisters|setregisters|stack)
_get_excluded_items "--cpu" _get_excluded_items "--cpu"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
@@ -837,7 +874,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
statistics) statistics)
items=(--reset --pattern) items=(--reset --pattern --descriptions)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
@@ -850,11 +887,10 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
esac esac
_get_excluded_items "--descriptions"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
else else
[[ "${prev}" == "--filename" ]] && \ [[ "${prev}" == "--filename" ]] && \
COMPREPLY=( $(compgen -- ${cur}) ) COMPREPLY=( $(compgen -f -- ${cur}) )
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
@@ -867,7 +903,7 @@ _VBoxManage() {
if [[ " ${items[@]} " == *" $subcommand "* ]]; then if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in case "${subcommand}" in
add|modify) add|modify)
items=(--ip --netmask --lowerip --upperip) items=(--ip --netmask --lowerip --upperip --options)
[[ " ${COMP_WORDS[@]} " != *" --ifname"* && [[ " ${COMP_WORDS[@]} " != *" --ifname"* &&
" ${COMP_WORDS[@]} " != *" --netname"* ]] && " ${COMP_WORDS[@]} " != *" --netname"* ]] &&
@@ -877,6 +913,9 @@ _VBoxManage() {
" ${COMP_WORDS[@]} " != *" --disable"* ]] && " ${COMP_WORDS[@]} " != *" --disable"* ]] &&
items+=(--enable --disable) items+=(--enable --disable)
[[ " ${COMP_WORDS[@]} " == *" --options"* ]] &&
items+=(--vm --nic --id --value --remove)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
@@ -921,14 +960,19 @@ _VBoxManage() {
else else
COMPREPLY=( $(compgen -W "--newpassword --oldpassword --cipher COMPREPLY=( $(compgen -W "--newpassword --oldpassword --cipher
--newpasswordid" -- ${cur}) ) --newpasswordid" -- ${cur}) )
fi fi
;; ;;
"export") "export")
items=( --manifest --iso --options --vsys) items=( --manifest --iso --options --vsys --cloud)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
elif [[ ${prev} == "--eulafile" ]]; then
COMPREPLY=( $(compgen -f -- ${cur}) )
elif [[ ${prev} == "--cloudkeepobject" ||
${prev} == "--cloudlaunchinstance" ||
${prev} == "--cloudpublicip" ]]; then
COMPREPLY=( $(compgen -W "true false" -- ${cur}) )
else else
[[ " ${COMP_WORDS[@]} " != *" -o "* && [[ " ${COMP_WORDS[@]} " != *" -o "* &&
" ${COMP_WORDS[@]} " != *" --output "* ]] && " ${COMP_WORDS[@]} " != *" --output "* ]] &&
@@ -936,11 +980,16 @@ _VBoxManage() {
[[ " ${COMP_WORDS[@]} " != *" --legacy09 "* && [[ " ${COMP_WORDS[@]} " != *" --legacy09 "* &&
" ${COMP_WORDS[@]} " != *" --ovf09 "* && " ${COMP_WORDS[@]} " != *" --ovf09 "* &&
" ${COMP_WORDS[@]} " != *" --ovf10 "* && " ${COMP_WORDS[@]} " != *" --ovf10 "* &&
" ${COMP_WORDS[@]} " != *" --ovf20 "* ]] && " ${COMP_WORDS[@]} " != *" --ovf20 "* &&
items+=(--legacy09 --ovf09 --ovf10 --ovf20) " ${COMP_WORDS[@]} " != *" --opc20 "* ]] &&
items+=(--legacy09 --ovf09 --ovf10 --ovf20 --opc10)
[[ " ${COMP_WORDS[@]} " == *" --vsys "* ]] && [[ " ${COMP_WORDS[@]} " == *" --vsys "* ]] &&
items+=(--product --producturl --vendor --vendorurl items+=(--product --producturl --vendor --vendorurl
--version --description --eula --eulafile) --version --description --eula --eulafile --vmname)
[[ " ${COMP_WORDS[@]} " == *" --cloud"* ]] &&
items+=(--vmname --cloudprofile --cloudshape --clouddomain
--clouddisksize --cloudbucket --cloudocivcn --cloudocisubnet
--cloudkeepobject --cloudlaunchinstance --cloudpublicip)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
@@ -949,6 +998,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "manifest iso nomacs COMPREPLY=( $(compgen -W "manifest iso nomacs
nomacsbutnat" -- ${cur}) ) nomacsbutnat" -- ${cur}) )
;; ;;
esac esac
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
@@ -1007,11 +1057,11 @@ _VBoxManage() {
case "${subcommand}" in case "${subcommand}" in
run) run)
items=(--exe --timeout --unquoted-args items=(--exe --timeout --unquoted-args
--ignore-operhaned-processes --no-profile --ignore-operhaned-processes --profile
--dos2unix --unix2dos --username --domain --) --dos2unix --unix2dos --username --domain --)
[[ " ${comp_words[@]} " != *" --password "* || [[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --putenv "* && [[ " ${COMP_WORDS[@]} " != *" --putenv "* &&
" ${COMP_WORDS[@]} " != *" -E "* ]] && " ${COMP_WORDS[@]} " != *" -E "* ]] &&
@@ -1035,11 +1085,11 @@ _VBoxManage() {
start) start)
items=(--exe --timeout --unquoted-args items=(--exe --timeout --unquoted-args
--ignore-operhaned-processes --no-profile --ignore-operhaned-processes --profile
--username --domain --passwordfile --password --) --username --domain --passwordfile --password --)
[[ " ${comp_words[@]} " != *" --password "* || [[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* && [[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] && " ${COMP_WORDS[@]} " != *" -v "* ]] &&
@@ -1053,14 +1103,14 @@ _VBoxManage() {
;; ;;
copyfrom|copyto) copyfrom|copyto)
items=(--dryrun --follow --target-directory items=(--follow --target-directory --username
--username --domain) --domain)
[[ " ${COMP_WORDS[@]} " != *" --recursive "* && [[ " ${COMP_WORDS[@]} " != *" --recursive "* &&
" ${COMP_WORDS[@]} " != *" -R "* ]] && " ${COMP_WORDS[@]} " != *" -R "* ]] &&
items+=(--recursive -R) items+=(--recursive -R)
[[ " ${comp_words[@]} " != *" --password "* || [[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] && " ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password) items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* && [[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] && " ${COMP_WORDS[@]} " != *" -v "* ]] &&
@@ -1246,6 +1296,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
updatega|updateguestadditions|updateadditions) updatega|updateguestadditions|updateadditions)
items=(--source --wait-start) items=(--source --wait-start)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* && [[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
@@ -1258,6 +1309,7 @@ _VBoxManage() {
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
watch) watch)
items=() items=()
[[ " ${COMP_WORDS[@]} " != *" --verbose "* && [[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
@@ -1271,6 +1323,7 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;; ;;
esac esac
case "${prev}" in case "${prev}" in
close) close)
items=(--verbose) items=(--verbose)
@@ -1284,7 +1337,7 @@ _VBoxManage() {
--image) --image)
COMPREPLY=( $(compgen -- ${cur}) ) COMPREPLY=( $(compgen -- ${cur}) )
;; ;;
--tmpdir) --target-directory|--tmpdir)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) ) COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;; ;;
--source) --source)
@@ -1295,6 +1348,9 @@ _VBoxManage() {
"${COMPREPLY[0]}" != *".iso" ]] && \ "${COMPREPLY[0]}" != *".iso" ]] && \
COMPREPLY[0]="${COMPREPLY[0]}/" COMPREPLY[0]="${COMPREPLY[0]}/"
;; ;;
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac esac
else else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
@@ -1397,12 +1453,40 @@ _VBoxManage() {
_list_comp ${cur} _list_comp ${cur}
else else
case "${prev}" in case "${prev}" in
--long|-l) --sorted|-s)
COMPREPLY=()
;;
*)
COMPREPLY=( $(compgen -W "-l --long" -- ${cur}) ) COMPREPLY=( $(compgen -W "-l --long" -- ${cur}) )
;; ;;
--long|-l)
COMPREPLY=( $(compgen -W "-s --sorted" -- ${cur}) )
;;
*)
COMPREPLY=( $(compgen -W "-l --long -s --sorted" -- ${cur}) )
;;
esac
fi
;;
mediumio)
if [[ ${prev} == ${cmd} ]]; then
_hdd_comp
_floppy_comp
_dvds_comp
else
case "${prev}" in
formatfat)
COMPREPLY=( $(compgen -W "--quick" -- ${cur}) )
;;
cat)
COMPREPLY=( $(compgen -W "--hex --offset --size
--output" -- ${cur}) )
;;
stream)
COMPREPLY=( $(compgen -W "--forma --variant
--output" -- ${cur}) )
;;
*)
COMPREPLY=( $(compgen -W "--password-file cat formatfat
stream" -- ${cur}) )
esac esac
fi fi
;; ;;
@@ -1469,14 +1553,12 @@ _VBoxManage() {
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
;; ;;
esac esac
else else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi fi
;; ;;
modifymedium) modifymedium)
@@ -1495,7 +1577,8 @@ _VBoxManage() {
;; ;;
*) *)
_find_item_name 2 _find_item_name 2
items=(--type --autoreset --property --compact --resize) items=(--type --autoreset --property --compact --resize
--move --description --setlocation)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in case "${prev}" in
@@ -1507,6 +1590,12 @@ _VBoxManage() {
--autoreset) --autoreset)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
--move)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;;
--setlocation)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac esac
;; ;;
esac esac
@@ -1517,7 +1606,7 @@ _VBoxManage() {
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 --cpuidset --cpuidremove --vtxux --pae --longmode --cpuid-set --cpuid-remove
--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
@@ -1577,15 +1666,19 @@ _VBoxManage() {
--audiocontroller --clipboard --draganddrop --vrde --vrdeextpack --audiocontroller --clipboard --draganddrop --vrde --vrdeextpack
--vrdeproperty --vrdeport --vrdeaddress --vrdeauthtype --vrdeproperty --vrdeport --vrdeaddress --vrdeauthtype
--vrdeauthlibrary --vrdemulticon --vrdereusecon --vrdevideochannel --vrdeauthlibrary --vrdemulticon --vrdereusecon --vrdevideochannel
--vrdevideochannelquality --usb --usbehci --snapshotfolder --vrdevideochannelquality --usbohci --usbehci --snapshotfolder
--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 --videocap --videocapscreens --autostart-enabled --autostart-delay --recording --recordingscreens
--videocapfile --videocapres --videocaprate --videocapfps --recordingfile --recordingvideores --recordingvideorate
--videocapmaxtime --videocapmaxsize --videocapopts --defaultfrontend --recordingvideofps --recordingmaxtime --recordingmaxsize
--cpuid-portability-level --paravirtprovider --audiocodec --usbxhci --recordingopts --defaultfrontend --cpuid-portability-level
--usbrename) --paravirtprovider --audiocodec --usbxhci --usbrename --apic
--x2apic --paravirtdebug --cpu-profile --biosapic --ibpb-on-vm-entry
--ibpb-on-vm-exit --spec-ctrl --audioin --audioout
--l1d-flush-on-sched --l1d-flush-on-vm-entry --mds-clear-on-sched
--mds-clear-on-vm-entry --nested-hw-virt --uarttype1 --uarttype2)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms _vms_comp vms
@@ -1597,10 +1690,12 @@ _VBoxManage() {
COMPREPLY=() COMPREPLY=()
_group_comp _group_comp
;; ;;
--ostype) --ostype)
COMPREPLY=() COMPREPLY=()
_os_comp _os_comp
;; ;;
--pagefusion|--acpi|--ioapic|--hpet|--triplefaultreset|\ --pagefusion|--acpi|--ioapic|--hpet|--triplefaultreset|\
--hwvirtex|--nestedpaging|--largepages|--vtxvpid|--vtxux|\ --hwvirtex|--nestedpaging|--largepages|--vtxvpid|--vtxux|\
--pae|--longmode|--cpuhotplug|--rtcuseutc|\ --pae|--longmode|--cpuhotplug|--rtcuseutc|\
@@ -1619,142 +1714,214 @@ _VBoxManage() {
--natdnshostresolver3|--natdnshostresolver4|\ --natdnshostresolver3|--natdnshostresolver4|\
--natdnshostresolver5|--natdnshostresolver6|\ --natdnshostresolver5|--natdnshostresolver6|\
--natdnshostresolver7|--natdnshostresolver8|--vrde|\ --natdnshostresolver7|--natdnshostresolver8|--vrde|\
--vrdemulticon|--vrdereusecon|--vrdevideochannel|--usb|\ --vrdemulticon|--vrdereusecon|--vrdevideochannel|--usbohci|\
--usbehci|--teleporter|--tracing-enabled|\ --usbehci|--teleporter|--tracing-enabled|\
--tracing-allow-vm-access|--usbcardreader|\ --tracing-allow-vm-access|--usbcardreader|\
--autostart-enabled|--videocap|--usbxhci) --autostart-enabled|--recording|--usbxhci|--apic|--x2apic|\
--ibpb-on-vm-entry|--ibpb-on-vm-exit|--spec-ctrl|--audioin|\
--audioout|--l1d-flush-on-sched|--l1d-flush-on-vm-entry|\
--mds-clear-on-sched|--mds-clear-on-vm-entry|\
--nested-hw-virt)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
--graphicscontroller) --graphicscontroller)
COMPREPLY=( $(compgen -W "none vboxvga vmsvga" \ COMPREPLY=( $(compgen -W "none vboxvga vmsvga vboxsvga" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--firmware) --firmware)
COMPREPLY=( $(compgen -W "bios efi efi32 efi64" \ COMPREPLY=( $(compgen -W "bios efi efi32 efi64" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--chipset) --chipset)
COMPREPLY=( $(compgen -W "ich9 piix3" -- ${cur}) ) COMPREPLY=( $(compgen -W "ich9 piix3" -- ${cur}) )
;; ;;
--biosbootmenu) --biosbootmenu)
COMPREPLY=( $(compgen -W "disabled menuonly COMPREPLY=( $(compgen -W "disabled menuonly
messageandmenu" -- ${cur}) ) messageandmenu" -- ${cur}) )
;; ;;
--boot[1-4]) --boot[1-4])
COMPREPLY=( $(compgen -W "none floppy dvd disk net" \ COMPREPLY=( $(compgen -W "none floppy dvd disk net" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--nic[1-8]) --nic[1-8])
COMPREPLY=( $(compgen -W "none null nat bridged intnet COMPREPLY=( $(compgen -W "none null nat bridged intnet
hostonly generic natnetwork" -- ${cur}) ) hostonly generic natnetwork" -- ${cur}) )
;; ;;
--nictype[1-8]) --nictype[1-8])
COMPREPLY=( $(compgen -W "Am79C970A Am79C973 82540EM COMPREPLY=( $(compgen -W "Am79C970A Am79C973 82540EM
82543GC 82545EM virtio" -- ${cur}) ) 82543GC 82545EM virtio" -- ${cur}) )
;; ;;
--nicpromisc[1-8]) --nicpromisc[1-8])
COMPREPLY=( $(compgen -W "deny allow-vms allow-all" \ COMPREPLY=( $(compgen -W "deny allow-vms allow-all" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--nicbandwidthgroup[1-8]) --nicbandwidthgroup[1-8])
COMPREPLY=() COMPREPLY=()
_bandwidthctl_comp _bandwidthctl_comp
_get_excluded_items "none" _get_excluded_items "none"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
;; ;;
--bridgeadapter[1-8]) --bridgeadapter[1-8])
COMPREPLY=() COMPREPLY=()
_bridgedif_comp _bridgedif_comp
_get_excluded_items "none" _get_excluded_items "none"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
;; ;;
--hostonlyadapter[1-8]) --hostonlyadapter[1-8])
COMPREPLY=() COMPREPLY=()
_hostonlyif_comp _hostonlyif_comp
_get_excluded_items "none" _get_excluded_items "none"
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
;; ;;
--intnet[1-8]) --intnet[1-8])
COMPREPLY=() COMPREPLY=()
_intnet_comp _intnet_comp
;; ;;
--nat-network[1-8]) --nat-network[1-8])
COMPREPLY=() COMPREPLY=()
_natnet_comp _natnet_comp
;; ;;
--natnet[1-8]) --natnet[1-8])
COMPREPLY=() COMPREPLY=()
_natnet_comp _natnet_comp
;; ;;
--natpf[1-8]) --natpf[1-8])
COMPREPLY+=( $(compgen -W "delete" -- ${cur}) ) COMPREPLY=( $(compgen -W "delete" -- ${cur}) )
;; ;;
--nataliasmode[1-8]) --nataliasmode[1-8])
COMPREPLY+=( $(compgen -W "default" -- ${cur}) ) COMPREPLY=( $(compgen -W "default" -- ${cur}) )
;; ;;
--macaddress[1-8]) --macaddress[1-8])
COMPREPLY+=( $(compgen -W "auto" -- ${cur}) ) COMPREPLY=( $(compgen -W "auto" -- ${cur}) )
;; ;;
--mouse) --mouse)
COMPREPLY+=( $(compgen -W "ps2 usb usbtablet COMPREPLY=( $(compgen -W "ps2 usb usbtablet
usbmultitouch" -- ${cur}) ) usbmultitouch" -- ${cur}) )
;; ;;
--keyboard) --keyboard)
COMPREPLY+=( $(compgen -W "ps2 usb" -- ${cur}) ) COMPREPLY=( $(compgen -W "ps2 usb" -- ${cur}) )
;; ;;
--uart[1-2]|--lpt[1-2]) --uart[1-2]|--lpt[1-2])
COMPREPLY+=( $(compgen -W "off" -- ${cur}) ) COMPREPLY=( $(compgen -W "off" -- ${cur}) )
;; ;;
--uartmode[1-2]) --uartmode[1-2])
COMPREPLY+=( $(compgen -W "disconnected server client COMPREPLY=( $(compgen -W "disconnected server client
tcpserver tcpclient file" -- ${cur}) ) tcpserver tcpclient file" -- ${cur}) )
;; ;;
--uarttype[1-2])
COMPREPLY=( $(compgen -W "16450 16550A
16750" -- ${cur}) )
;;
--audio) --audio)
COMPREPLY+=( $(compgen -W "none null oss alsa pulse" \ COMPREPLY=( $(compgen -W "none null oss alsa pulse" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--audiocontroller) --audiocontroller)
COMPREPLY+=( $(compgen -W "ac97 hda sb16" -- ${cur}) ) COMPREPLY=( $(compgen -W "ac97 hda sb16" -- ${cur}) )
;; ;;
--audiocodec) --audiocodec)
COMPREPLY+=( $(compgen -W "stac9700 ad1980 stac9221 COMPREPLY=( $(compgen -W "stac9700 ad1980 stac9221
sb16" -- ${cur}) ) sb16" -- ${cur}) )
;; ;;
--clipboard) --clipboard)
COMPREPLY+=( $(compgen -W "disabled hosttoguest COMPREPLY=( $(compgen -W "disabled hosttoguest
guesttohost bidirectional" -- ${cur}) ) guesttohost bidirectional" -- ${cur}) )
;; ;;
--draganddrop) --draganddrop)
COMPREPLY+=( $(compgen -W "disabled hosttoguest" \ COMPREPLY=( $(compgen -W "disabled hosttoguest
-- ${cur}) ) guesttohost bidirectional" -- ${cur}) )
;; ;;
--vrdeextpack|--vrdeauthlibrary|--snapshotfolder|\ --vrdeextpack|--vrdeauthlibrary|--snapshotfolder|\
--defaultfrontend) --defaultfrontend)
COMPREPLY+=( $(compgen -W "default" -- ${cur}) ) COMPREPLY=( $(compgen -W "default" -- ${cur}) )
;; ;;
--vrdeauthtype) --vrdeauthtype)
COMPREPLY+=( $(compgen -W "null external guest" \ COMPREPLY=( $(compgen -W "null external guest" \
-- ${cur}) ) -- ${cur}) )
;; ;;
--paravirtprovider) --paravirtprovider)
COMPREPLY=( $(compgen -W "none default legacy minimal COMPREPLY=( $(compgen -W "none default legacy minimal
hyperv kvm" -- ${cur}) ) hyperv kvm" -- ${cur}) )
;; ;;
--cpuid-portability-level) --cpuid-portability-level)
COMPREPLY=( $(compgen -W "0 1 2 3" -- ${cur}) ) 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|--recordingfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--nictracefile[1-8])
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--nattftpfile[1-8])
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
fi
;;
movevm)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms
else
_find_item_name 2
items=(--type --folder)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in
--type)
COMPREPLY=( $(compgen -W "basic" -- ${cur}) )
_snapshot_comp
;;
--folder)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac esac
fi fi
;; ;;
natnetwork) natnetwork)
items=(add remove modify start stop) items=(add remove modify start stop list)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
if [[ "${prev}" == "--netname" ]]; then if [[ "${prev}" == "--netname" ]]; then
_natnet_comp _natnet_comp
@@ -1805,7 +1972,7 @@ _VBoxManage() {
setproperty) setproperty)
items=(machinefolder hwvirtexclusive vrdeauthlibrary items=(machinefolder hwvirtexclusive vrdeauthlibrary
websrvauthlibrary vrdeextpack autostartdbpath loghistorycount websrvauthlibrary vrdeextpack autostartdbpath loghistorycount
defaultfrontend logginglevel) defaultfrontend logginglevel proxymode proxyurl)
subcommand=${COMP_WORDS[2]} subcommand=${COMP_WORDS[2]}
if [[ "${prev}" == "${cmd}" ]]; then if [[ "${prev}" == "${cmd}" ]]; then
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
@@ -1832,6 +1999,10 @@ _VBoxManage() {
defaultfrontend) defaultfrontend)
COMPREPLY=( $(compgen -W "null" -- ${cur}) ) COMPREPLY=( $(compgen -W "null" -- ${cur}) )
;; ;;
proxymode)
COMPREPLY=( $(compgen -W "system noproxy
manual" -- ${cur}) )
;;
esac esac
fi fi
;; ;;
@@ -1872,6 +2043,7 @@ _VBoxManage() {
[[ ${#COMPREPLY[@]} -eq 0 ]] && \ [[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) ) COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
;; ;;
showmediuminfo) showmediuminfo)
if [[ ${prev} == ${cmd} ]]; then if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) ) COMPREPLY=( $(compgen -W "disk dvd floppy" -- ${cur}) )
@@ -1967,7 +2139,13 @@ _VBoxManage() {
elif [[ "${prev}" == "--type" ]]; then elif [[ "${prev}" == "--type" ]]; then
COMPREPLY=( $(compgen -W "gui sdl headless separate" -- ${cur}) ) COMPREPLY=( $(compgen -W "gui sdl headless separate" -- ${cur}) )
else else
local items=(--putenv -E)
_is_any_item_used "${items[@]}"
if [[ "${result}" == "ITIS" ]]; then
local items=(--type) local items=(--type)
else
local items=(--type -E --putenv)
fi
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
fi fi
@@ -1982,7 +2160,7 @@ _VBoxManage() {
--comment --setuuid --setparentuuid --passthrough --tempeject --comment --setuuid --setparentuuid --passthrough --tempeject
--nonrotational --discard --hotpluggable --bandwidthgroup --nonrotational --discard --hotpluggable --bandwidthgroup
--forceunmount --server --target --tport --lun --encodedlun --forceunmount --server --target --tport --lun --encodedlun
--username --password --initiator --intnet) --username --password --initiator --intnet --passwordfile)
_get_excluded_items "${items[@]}" _get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) ) COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
@@ -2008,6 +2186,9 @@ _VBoxManage() {
--passthrough|--tempeject|--nonrotational|--discard) --passthrough|--tempeject|--nonrotational|--discard)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;; ;;
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac esac
fi fi
;; ;;
@@ -2023,11 +2204,11 @@ _VBoxManage() {
case "${prev}" in case "${prev}" in
--add) --add)
COMPREPLY=( $(compgen -W "ide sata scsi floppy COMPREPLY=( $(compgen -W "ide sata scsi floppy
sas" -- ${cur}) ) sas usb pcie" -- ${cur}) )
;; ;;
--controller) --controller)
COMPREPLY=( $(compgen -W "LSILogic LSILogicSAS BusLogic COMPREPLY=( $(compgen -W "LSILogic LSILogicSAS BusLogic
IntelAHCI PIIX3 PIIX4 ICH6 I82078" -- ${cur}) ) IntelAHCI PIIX3 PIIX4 ICH6 I82078 USB NVMe" -- ${cur}) )
;; ;;
--bootable|--hostiocache) --bootable|--hostiocache)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) ) COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
@@ -2046,7 +2227,7 @@ _VBoxManage() {
fi fi
;; ;;
usbfilte) usbfilter)
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
@@ -2087,6 +2268,89 @@ _VBoxManage() {
fi fi
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 esac
} }
complete -o default -F _VBoxManage VBoxManage complete -o default -F _VBoxManage VBoxManage