15 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
2 changed files with 281 additions and 86 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.1.36, 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
simple session with the VBoxManage command below, to have an idea how it works:

View File

@@ -4,7 +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.1.36
# Version: 6.0.12
_VBoxManage() {
local cur prev opts cmd subcommand tmp items name index result
@@ -42,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
@@ -259,11 +271,14 @@ _VBoxManage() {
snap=$(VBoxManage snapshot "${name//\\/}" \
list | \
grep UUID |
awk -F ': ' '{print $2}' | \
sed 's/ (.*//' | \
tr '\n' '|' | \
sed 's/|$//' | \
sed 's/\s/\\ /g')
awk -F ': *' -v ORS='|' '/UUID: / {
n=$2; u=$3
sub(/..UUID/, "", n)
gsub(/ /, "\\ ", n);
sub(/[)].*/, "", u)
print n; print u
}'
)
IFS='|' read -ra snap <<< "$snap"
for item in "${snap[@]}"
@@ -308,14 +323,10 @@ _VBoxManage() {
_list_comp() {
local list
list=$(VBoxManage list | \
grep '|' | \
sed 's/\[.*\]//g'| \
sed 's/VBoxManage list//' | \
tr "\\n" " " | \
sed 's/$/\n/' | \
sed 's/\s\+//g' | \
sed 's/|/ /g')
list=$(VBoxManage list | sed -e '1,2d' \
-e 's/VBoxManage list //' \
-e 's/[\[\]\|]/ /g' \
-e 's/|/ /g'|xargs echo)
COMPREPLY=( $(compgen -W "$list" -- ${cur}) )
}
@@ -441,9 +452,9 @@ _VBoxManage() {
sort | \
uniq)
# add debugvm command manually, since it's described differently in
# vboxmanage help
opts="${opts} debugvm"
# 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
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
@@ -568,7 +579,7 @@ _VBoxManage() {
;;
--options)
COMPREPLY=( $(compgen -W "link keepallmacs keepnatmacs
keepdisknames" -- ${cur}) )
keepdisknames keephwuuids" -- ${cur}) )
;;
--groups)
COMPREPLY=()
@@ -626,17 +637,17 @@ _VBoxManage() {
setlinkstate3 setlinkstate4 setlinkstate5 setlinkstate6
setlinkstate7 setlinkstate8 setvideomodehint teleport unplugcpu
usbattach usbdetach vrde vrdeport vrdeproperty
vrdevideochannelquality webcam videocap videocapscreens
videocapfile videocapres videocaprate videocapfps
videocapmaxtime videocapmaxsize addencpassword removeencpassword
removeallencpasswords)
vrdevideochannelquality webcam recording addencpassword
removeencpassword removeallencpasswords keyboardputstring
keyboardputfile audioin audioout setscreenlayout changeuartmode1
changeuartmode2)
_find_item_name 2
subcommand=${COMP_WORDS[$((index+1))]}
if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in
nictracefile[1-8])
keyboardputfile|nictracefile[1-8])
[[ ${prev} == "nictracefile"* ]] && \
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
@@ -659,7 +670,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}) )
;;
@@ -670,14 +681,28 @@ _VBoxManage() {
;;
draganddrop)
[[ ${prev} == "draganddrop" ]] && \
COMPREPLY=( $(compgen -W "disabled
hosttoguest" -- ${cur}) )
COMPREPLY=( $(compgen -W "disabled hosttoguest
guesttohost bidirectional" -- ${cur}) )
;;
vrde|videocap)
[[ ${prev} == "vrde" ||
${prev} == "videocap" ]] && \
vrde)
[[ ${prev} == "vrde" ]] && \
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)
[[ ${prev} == "videocapscreens" ]] && \
COMPREPLY=( $(compgen -W "all none" -- ${cur}) )
@@ -716,7 +741,15 @@ _VBoxManage() {
_get_excluded_items "${tmp[@]}"
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
elif [[ ${prev} == "--passwordfile" || ${prev} == "--capturefile" ]]; then
COMPREPLY=( $(compgen -f -- ${cur}) )
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
@@ -762,7 +795,7 @@ _VBoxManage() {
case "${prev}" in
--filename)
COMPREPLY=( $(compgen -- ${cur}) )
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
--diffparent)
COMPREPLY=()
@@ -774,7 +807,7 @@ _VBoxManage() {
;;
--variant)
COMPREPLY=( $(compgen -W "Standard Fixed Split2G
Stream ESX" -- ${cur}) )
Stream ESX Formatted" -- ${cur}) )
;;
esac
;;
@@ -783,7 +816,8 @@ _VBoxManage() {
;;
createvm)
items=(--name --groups --ostype --register --basefolder --uuid)
items=(--name --groups --ostype --register --basefolder --uuid
--default)
if [[ ${prev} == ${cmd} ]]; then
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
else
@@ -856,7 +890,7 @@ _VBoxManage() {
COMPREPLY+=( $(compgen -W "$result" -- ${cur}) )
else
[[ "${prev}" == "--filename" ]] && \
COMPREPLY=( $(compgen -- ${cur}) )
COMPREPLY=( $(compgen -f -- ${cur}) )
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi
@@ -869,7 +903,7 @@ _VBoxManage() {
if [[ " ${items[@]} " == *" $subcommand "* ]]; then
case "${subcommand}" in
add|modify)
items=(--ip --netmask --lowerip --upperip)
items=(--ip --netmask --lowerip --upperip --options)
[[ " ${COMP_WORDS[@]} " != *" --ifname"* &&
" ${COMP_WORDS[@]} " != *" --netname"* ]] &&
@@ -879,6 +913,9 @@ _VBoxManage() {
" ${COMP_WORDS[@]} " != *" --disable"* ]] &&
items+=(--enable --disable)
[[ " ${COMP_WORDS[@]} " == *" --options"* ]] &&
items+=(--vm --nic --id --value --remove)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
@@ -927,9 +964,15 @@ _VBoxManage() {
;;
"export")
items=( --manifest --iso --options --vsys)
items=( --manifest --iso --options --vsys --cloud)
if [[ ${prev} == ${cmd} ]]; then
_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
[[ " ${COMP_WORDS[@]} " != *" -o "* &&
" ${COMP_WORDS[@]} " != *" --output "* ]] &&
@@ -937,11 +980,16 @@ _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)
--version --description --eula --eulafile --vmname)
[[ " ${COMP_WORDS[@]} " == *" --cloud"* ]] &&
items+=(--vmname --cloudprofile --cloudshape --clouddomain
--clouddisksize --cloudbucket --cloudocivcn --cloudocisubnet
--cloudkeepobject --cloudlaunchinstance --cloudpublicip)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
@@ -950,9 +998,10 @@ _VBoxManage() {
COMPREPLY=( $(compgen -W "manifest iso nomacs
nomacsbutnat" -- ${cur}) )
;;
esac
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
fi
;;
@@ -1011,8 +1060,8 @@ _VBoxManage() {
--ignore-operhaned-processes --profile
--dos2unix --unix2dos --username --domain --)
[[ " ${comp_words[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] &&
[[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --putenv "* &&
" ${COMP_WORDS[@]} " != *" -E "* ]] &&
@@ -1039,8 +1088,8 @@ _VBoxManage() {
--ignore-operhaned-processes --profile
--username --domain --passwordfile --password --)
[[ " ${comp_words[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] &&
[[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
@@ -1054,14 +1103,14 @@ _VBoxManage() {
;;
copyfrom|copyto)
items=(--dryrun --follow --target-directory
--username --domain)
items=(--follow --target-directory --username
--domain)
[[ " ${COMP_WORDS[@]} " != *" --recursive "* &&
" ${COMP_WORDS[@]} " != *" -R "* ]] &&
items+=(--recursive -R)
[[ " ${comp_words[@]} " != *" --password "* ||
" ${comp_words[@]} " != *" --passwordfile "* ]] &&
[[ " ${COMP_WORDS[@]} " != *" --password "* ||
" ${COMP_WORDS[@]} " != *" --passwordfile "* ]] &&
items+=(--passwordfile --password)
[[ " ${COMP_WORDS[@]} " != *" --verbose "* &&
" ${COMP_WORDS[@]} " != *" -v "* ]] &&
@@ -1288,7 +1337,7 @@ _VBoxManage() {
--image)
COMPREPLY=( $(compgen -- ${cur}) )
;;
--tmpdir)
--target-directory|--tmpdir)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;;
--source)
@@ -1299,6 +1348,9 @@ _VBoxManage() {
"${COMPREPLY[0]}" != *".iso" ]] && \
COMPREPLY[0]="${COMPREPLY[0]}/"
;;
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
else
[[ ${#COMPREPLY[@]} -eq 0 ]] && \
@@ -1401,12 +1453,40 @@ _VBoxManage() {
_list_comp ${cur}
else
case "${prev}" in
--long|-l)
COMPREPLY=()
;;
*)
--sorted|-s)
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
fi
;;
@@ -1498,7 +1578,7 @@ _VBoxManage() {
*)
_find_item_name 2
items=(--type --autoreset --property --compact --resize
--move)
--move --description --setlocation)
_get_excluded_items "${items[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
case "${prev}" in
@@ -1513,6 +1593,9 @@ _VBoxManage() {
--move)
COMPREPLY=( $(compgen -o dirnames -- ${cur}) )
;;
--setlocation)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
;;
esac
@@ -1523,7 +1606,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
@@ -1583,17 +1666,19 @@ _VBoxManage() {
--audiocontroller --clipboard --draganddrop --vrde --vrdeextpack
--vrdeproperty --vrdeport --vrdeaddress --vrdeauthtype
--vrdeauthlibrary --vrdemulticon --vrdereusecon --vrdevideochannel
--vrdevideochannelquality --usb --usbehci --snapshotfolder
--vrdevideochannelquality --usbohci --usbehci --snapshotfolder
--teleporter --teleporterport --teleporteraddress
--teleporterpassword --teleporterpasswordfile --tracing-enabled
--tracing-config --tracing-allow-vm-access --usbcardreader
--autostart-enabled --autostart-delay --videocap --videocapscreens
--videocapfile --videocapres --videocaprate --videocapfps
--videocapmaxtime --videocapmaxsize --videocapopts --defaultfrontend
--cpuid-portability-level --paravirtprovider --audiocodec --usbxhci
--usbrename --apic --x2apic --paravirtdebug --cpu-profile
--biosapic --videocapopts --ibpb-on-vm-entry --ibpb-on-vm-exit
--spec-ctrl)
--autostart-enabled --autostart-delay --recording --recordingscreens
--recordingfile --recordingvideores --recordingvideorate
--recordingvideofps --recordingmaxtime --recordingmaxsize
--recordingopts --defaultfrontend --cpuid-portability-level
--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
_vms_comp vms
@@ -1629,16 +1714,19 @@ _VBoxManage() {
--natdnshostresolver3|--natdnshostresolver4|\
--natdnshostresolver5|--natdnshostresolver6|\
--natdnshostresolver7|--natdnshostresolver8|--vrde|\
--vrdemulticon|--vrdereusecon|--vrdevideochannel|--usb|\
--vrdemulticon|--vrdereusecon|--vrdevideochannel|--usbohci|\
--usbehci|--teleporter|--tracing-enabled|\
--tracing-allow-vm-access|--usbcardreader|\
--autostart-enabled|--videocap|--usbxhci|--apic|--x2apic|\
--ibpb-on-vm-entry|--ibpb-on-vm-exit|--spec-ctrl)
--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}) )
;;
--graphicscontroller)
COMPREPLY=( $(compgen -W "none vboxvga vmsvga" \
COMPREPLY=( $(compgen -W "none vboxvga vmsvga vboxsvga" \
-- ${cur}) )
;;
@@ -1713,66 +1801,71 @@ _VBoxManage() {
;;
--natpf[1-8])
COMPREPLY+=( $(compgen -W "delete" -- ${cur}) )
COMPREPLY=( $(compgen -W "delete" -- ${cur}) )
;;
--nataliasmode[1-8])
COMPREPLY+=( $(compgen -W "default" -- ${cur}) )
COMPREPLY=( $(compgen -W "default" -- ${cur}) )
;;
--macaddress[1-8])
COMPREPLY+=( $(compgen -W "auto" -- ${cur}) )
COMPREPLY=( $(compgen -W "auto" -- ${cur}) )
;;
--mouse)
COMPREPLY+=( $(compgen -W "ps2 usb usbtablet
COMPREPLY=( $(compgen -W "ps2 usb usbtablet
usbmultitouch" -- ${cur}) )
;;
--keyboard)
COMPREPLY+=( $(compgen -W "ps2 usb" -- ${cur}) )
COMPREPLY=( $(compgen -W "ps2 usb" -- ${cur}) )
;;
--uart[1-2]|--lpt[1-2])
COMPREPLY+=( $(compgen -W "off" -- ${cur}) )
COMPREPLY=( $(compgen -W "off" -- ${cur}) )
;;
--uartmode[1-2])
COMPREPLY+=( $(compgen -W "disconnected server client
COMPREPLY=( $(compgen -W "disconnected server client
tcpserver tcpclient file" -- ${cur}) )
;;
--uarttype[1-2])
COMPREPLY=( $(compgen -W "16450 16550A
16750" -- ${cur}) )
;;
--audio)
COMPREPLY+=( $(compgen -W "none null oss alsa pulse" \
COMPREPLY=( $(compgen -W "none null oss alsa pulse" \
-- ${cur}) )
;;
--audiocontroller)
COMPREPLY+=( $(compgen -W "ac97 hda sb16" -- ${cur}) )
COMPREPLY=( $(compgen -W "ac97 hda sb16" -- ${cur}) )
;;
--audiocodec)
COMPREPLY+=( $(compgen -W "stac9700 ad1980 stac9221
COMPREPLY=( $(compgen -W "stac9700 ad1980 stac9221
sb16" -- ${cur}) )
;;
--clipboard)
COMPREPLY+=( $(compgen -W "disabled hosttoguest
COMPREPLY=( $(compgen -W "disabled hosttoguest
guesttohost bidirectional" -- ${cur}) )
;;
--draganddrop)
COMPREPLY+=( $(compgen -W "disabled hosttoguest" \
-- ${cur}) )
COMPREPLY=( $(compgen -W "disabled hosttoguest
guesttohost bidirectional" -- ${cur}) )
;;
--vrdeextpack|--vrdeauthlibrary|--snapshotfolder|\
--defaultfrontend)
COMPREPLY+=( $(compgen -W "default" -- ${cur}) )
COMPREPLY=( $(compgen -W "default" -- ${cur}) )
;;
--vrdeauthtype)
COMPREPLY+=( $(compgen -W "null external guest" \
COMPREPLY=( $(compgen -W "null external guest" \
-- ${cur}) )
;;
@@ -1794,6 +1887,35 @@ _VBoxManage() {
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
fi
;;
@@ -1850,7 +1972,7 @@ _VBoxManage() {
setproperty)
items=(machinefolder hwvirtexclusive vrdeauthlibrary
websrvauthlibrary vrdeextpack autostartdbpath loghistorycount
defaultfrontend logginglevel)
defaultfrontend logginglevel proxymode proxyurl)
subcommand=${COMP_WORDS[2]}
if [[ "${prev}" == "${cmd}" ]]; then
COMPREPLY=( $(compgen -W "${items[*]}" -- ${cur}) )
@@ -1877,6 +1999,10 @@ _VBoxManage() {
defaultfrontend)
COMPREPLY=( $(compgen -W "null" -- ${cur}) )
;;
proxymode)
COMPREPLY=( $(compgen -W "system noproxy
manual" -- ${cur}) )
;;
esac
fi
;;
@@ -2013,7 +2139,13 @@ _VBoxManage() {
elif [[ "${prev}" == "--type" ]]; then
COMPREPLY=( $(compgen -W "gui sdl headless separate" -- ${cur}) )
else
local items=(--type)
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
@@ -2028,7 +2160,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}) )
@@ -2054,6 +2186,9 @@ _VBoxManage() {
--passthrough|--tempeject|--nonrotational|--discard)
COMPREPLY=( $(compgen -W "on off" -- ${cur}) )
;;
--passwordfile)
COMPREPLY=( $(compgen -f -- ${cur}) )
;;
esac
fi
;;
@@ -2156,6 +2291,66 @@ _VBoxManage() {
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