2022-12-13 13:18:12 +00:00
|
|
|
#compdef VBoxManage=vboxmanage VBoxHeadless=vboxheadless vboxmanage=vboxmanage vboxheadless=vboxheadless
|
2011-07-23 00:28:09 +00:00
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Description
|
|
|
|
# -----------
|
|
|
|
#
|
2022-11-23 04:23:19 +00:00
|
|
|
# Completion script for VirtualBox (https://www.virtualbox.org/).
|
2011-07-23 00:28:09 +00:00
|
|
|
#
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Authors
|
|
|
|
# -------
|
|
|
|
#
|
|
|
|
# * Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
|
|
|
|
# * Julien Nicoulaud <julien.nicoulaud@gmail.com>
|
|
|
|
#
|
|
|
|
# ------------------------------------------------------------------------------
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
_virtualbox() {
|
|
|
|
local ret=1
|
|
|
|
_call_function ret _$service
|
|
|
|
return ret
|
2022-01-25 16:30:35 +00:00
|
|
|
}
|
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
(( $+functions[_vboxmanage] )) ||
|
2022-12-22 12:36:57 +00:00
|
|
|
_vboxmanage() {
|
|
|
|
local context state line expl
|
|
|
|
local -A opt_args
|
|
|
|
local ret=1
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-22 12:36:57 +00:00
|
|
|
_arguments -C \
|
|
|
|
'1: :_vboxmanage_commands' \
|
|
|
|
'*:: :->subcmds' \
|
|
|
|
&& ret=0
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-22 12:36:57 +00:00
|
|
|
case $state in
|
|
|
|
(subcmds)
|
|
|
|
case "$words[1]" in
|
|
|
|
(list)
|
|
|
|
_arguments \
|
|
|
|
'--long[Show detailed information about each information]' \
|
|
|
|
'--sorted[Sorts the list of information entries alphabetically]' \
|
|
|
|
'1: :_vboxmanage_list_args' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(showvminfo)
|
|
|
|
_arguments \
|
|
|
|
'--details[Includes detailed information about the VM]' \
|
|
|
|
'--machinereadable[Specifies that the VM information be in a machine-readable format]' \
|
|
|
|
'--password-id[Specifies password id of the VM if it is encrypted]:id' \
|
|
|
|
'--password[Specifies password of the VM if it is encrypted]: :_files' \
|
|
|
|
'--log=[Specifies a numerical index that identifies the log file]:id' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(registervm)
|
|
|
|
_arguments \
|
|
|
|
'--password[Use the --password to supply the encryption password of the VM]: :_files' \
|
|
|
|
'1: :_files' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(unregistervm)
|
|
|
|
_arguments \
|
|
|
|
'--delete[Deletes the following files related to the VM automatically]' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(createvm)
|
|
|
|
_arguments \
|
|
|
|
'--name[Specifies a new name for the new VM]:name' \
|
|
|
|
'--basefolder=[Specifies the name of the folder in which to save the machine configuration file for the new VM]: :_files -/' \
|
|
|
|
'--default[Applies a default hardware configuration for the specified guest OS]' \
|
|
|
|
'--group=[Assigns the VM to the specified groups]:group_id' \
|
|
|
|
'--ostype=[Specifies the guest OS to run in the VM]:_vboxostypes' \
|
|
|
|
'--register[Registers the VM with your Oracle VM VirtualBox installation]' \
|
|
|
|
'--uuid=[Specifies the Universally Unique Identifier(UUID) of the VM]:uuid' \
|
|
|
|
'--ciper=[Specifies the cipher to use for encryption]: :(AES-128 AES-256)' \
|
|
|
|
'--password-id=[Specifies a new password identifier]:password_id' \
|
|
|
|
'--password=[Use the --password to supply the encryption password of the VM]: :_files' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(clonevm)
|
|
|
|
_arguments \
|
|
|
|
'--basefolder=[Specifies the name of the folder in which to save the configuration for the new VM]: :_files -/' \
|
|
|
|
'--groups=[Assigns the clone to the specified group or groups]:group' \
|
|
|
|
'--mode=[Specifies which of the following cloning modes to use]: :(machine machineandchildren all)' \
|
|
|
|
'--name=[Specifies a new name for the new VM]:name' \
|
|
|
|
'--options=[Specifies how to create the new clone]' \
|
|
|
|
'--register[Automatically registers the new clone in this Oracle VM VirtualBox installation]' \
|
|
|
|
'--snapshot=[Specifies the snapshot on which to base the new VM]:name' \
|
|
|
|
'--uuid=[Specifies the UUID for the new VM]:uuid' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(movevm)
|
|
|
|
_arguments \
|
|
|
|
'--type=[Specifies the type of the move operation]: :(basic)' \
|
|
|
|
'--folder=[Specifies a full path name or relative path name of the new location on the host file system]: :_files -/' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(encryptvm)
|
|
|
|
_vboxmanage_encryptvm && ret=0
|
|
|
|
;;
|
|
|
|
(cloud)
|
2022-12-23 12:59:58 +00:00
|
|
|
_vboxmanage_cloud && ret=0
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(cloudprofile)
|
2022-12-23 07:46:30 +00:00
|
|
|
_vboxmanage_cloudprofile && ret=0
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(import)
|
|
|
|
_arguments \
|
|
|
|
'--dry-run[Performs a dry run of the VBoxManage import command]' \
|
|
|
|
'--options=[Enables you to fine tune the import operation]: :(keepallmacs keepnatmacs importtovdi)' \
|
|
|
|
'--ostype=[Specifies the guest operating system (OS) information for the VM]: :_vboxostypes' \
|
|
|
|
'--vmname=[Specifies the name of the VM to be used by Oracle VM VirtualBox]:name' \
|
|
|
|
'--basefolder=[Specifies the folder where the files of the imported VM are stored]: :_files -/' \
|
|
|
|
'--memory=[Specifies the memory size in Megabytes for the imported VM]:memory' \
|
|
|
|
'--cpus=[Specifies the number of CPUs for the imported VM]:cpus' \
|
|
|
|
'--description=[Specifies the description text]:desc' \
|
|
|
|
'--vsys=[Specifies the index selecting a specific VM within the appliance]:index' \
|
|
|
|
'--unit=[Specifies the index selecting a specific unit of a VM within the appliance]:index' \
|
|
|
|
'--settingsfile=[Specifies the name of the VM config file]: :_files' \
|
|
|
|
'--group=[Specifies the primary group of the imported VM]:group' \
|
|
|
|
'--eula=[Enables you to show or accept the license conditions]: :(show accept)' \
|
|
|
|
'--ignore[Ignores the current unit of an imported VM]' \
|
|
|
|
'--scsitype=[Enables you to select the type of the SCSI controller]: :(BusLogic LsiLogic)' \
|
|
|
|
'--cloud[Specifies that the import should be from the cloud]' \
|
|
|
|
'--cloudprofile=[Specifies the cloud profile]:profile' \
|
|
|
|
'--cloudinstanceid=[Specifies the ID of an existing instance in the cloud]:id' \
|
|
|
|
'--cloudbucket=[Specifies the bucket name in which to store the object created]:bucket' \
|
|
|
|
'1:ovf file:_files -g \*.{ovf,ova}' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(signova)
|
|
|
|
_arguments \
|
|
|
|
'--certificate=[File containing the certificate that the OVA should be signed with]: :_files' \
|
|
|
|
'--private-key=[The file containing the private key]: :_files' \
|
|
|
|
'--private-key-password-file=[File containing the private key password]: :_files' \
|
|
|
|
'--digest-type=[Select the cryptographic digest algorithm to use in the signing]: :(SHA-256 SHA-512 SHA-1)' \
|
|
|
|
'(--pkcs7 --no-pkcs7)--pkcs7[Enables the creation of an additional PKCS#7/CMS signature]' \
|
|
|
|
'(--pkcs7 --no-pkcs7)--no-pkcs7[Disables the creation of an additional PKCS#7/CMS signature]' \
|
|
|
|
'--intermediate-cert=[File containing an intermediary certificate]: :_files' \
|
|
|
|
'--force[Overwrite existing signature if present]' \
|
|
|
|
'--dry-run[Do not actually modify the OVA, just test-run the signing operation]' \
|
|
|
|
'(--verbose --quiet)--verbose[Verbose the command execution]' \
|
|
|
|
'(--verbose --quiet)--quiet[Quiet the command execution]' \
|
|
|
|
'1:ova' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(startvm)
|
|
|
|
_arguments \
|
|
|
|
'*--putenv=[Assigns a value to an environment variable as a name-value pair]:value' \
|
|
|
|
'--type=[Specifies the frontend used to start the VM]: :(gui headless sdl separate)' \
|
|
|
|
'--password[Use the --password to supply the encryption password]: :_files' \
|
|
|
|
'--password-id=[Use the --password-id option to specify the id]:id' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(unattended)
|
2022-12-23 09:13:26 +00:00
|
|
|
_vboxmanage_unattended
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(adoptstate)
|
|
|
|
_arguments \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
'*:sav file:_files -g "*.sav"' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(snapshot)
|
2022-12-23 11:55:17 +00:00
|
|
|
_vboxmanage_snapshot
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(closemedium)
|
|
|
|
_arguments \
|
|
|
|
'--delete[Deletes the image file]' \
|
|
|
|
'1:type:(disk dvd floppy)' \
|
|
|
|
'*:file:_files' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(storageattach)
|
|
|
|
_arguments \
|
|
|
|
'--storagectl=[Specifies the name of the storage controller]:name' \
|
|
|
|
'--port=[Specifies the port number of the storage controller to modify]:port' \
|
|
|
|
"--device=[Specifies the port's device number to modify]:num" \
|
|
|
|
'--type=[Specifies the drive type to which the medium is associated]: :(dvddrive fdd hdd)' \
|
|
|
|
'--medium=[Specifies media]:media' \
|
|
|
|
'--mtype=[Specifies how this medium behaves]: :(normal writethrough immutable shareable readonly multiattach)' \
|
|
|
|
'--comment=[Specifies an optional description to store with the medium]:text' \
|
|
|
|
'--setuuid=[Modifies the UUID of a medium before attaching it to a VM]:uuid' \
|
|
|
|
'--setparentuuid=[Modifies the parent UUID of a medium before attaching it to a VM]:uuid' \
|
|
|
|
'--passthrough=[For a virtual DVD drive only]: :(on off)' \
|
|
|
|
'--tempeject=[For a virtual DVD drive only]: :(on off)' \
|
|
|
|
'--nonrotational=[Enables you to specify that the virtual hard disk is non-rotational]: :(on off)'\
|
|
|
|
'--discard=[Specifies whether to enable the auto-discard feature for a virtual hard disk]: :(on off)' \
|
|
|
|
'--bandwidthgroup=[Specifies the bandwidth group to use for the device]:name' \
|
|
|
|
'--forceunmount[For a virtual DVD or floppy drive only]' \
|
|
|
|
'--server=[Specifies the host name or IP address of the iSCSI target]:addr' \
|
|
|
|
'--target=[Specifies the target name string]:name' \
|
|
|
|
'--tport=[Specifies the TCP/IP port number of the iSCSI service on the target]:port' \
|
|
|
|
'--lun=[Specifies the logical unit number (LUN) of the target resource]:lun' \
|
|
|
|
'--encodedlun=[Specifies the hexadecimal-encoded of the target resource]:lun' \
|
|
|
|
'--username=[Specifies the user name to use for target authentication]:name' \
|
|
|
|
'--password=[Specifies the password used for target authentication]:password' \
|
|
|
|
'--passwordfile=[Specifies a file that contains the target authentication password as clear text]: :_files' \
|
|
|
|
'--iniitator=[Specifies the iSCSI initiator]:initiator' \
|
|
|
|
'--intnet[Specifies whether to connect to the iSCSI target that uses internal networking]' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(storagectl)
|
|
|
|
_arguments \
|
|
|
|
'--name=[Specifies the name of the storage controller]:name' \
|
|
|
|
'--add=[Specifies the type of the system bus]: :(floppy ide pcie sas sata scsi usb)' \
|
|
|
|
'--controller=[Specifies the chipset type]: :(BusLogic I82078 ICH6 IntelAHCI LSILogic LSILogicSAS NVMe PIIX3 PIIX4 USB)' \
|
|
|
|
'--portcount=[Specifies the number of ports that the storage controller supports]:count' \
|
|
|
|
'--hostiocache=[Specifies whether to use the host I/O cache]: :(on off)' \
|
|
|
|
'--bootable=[Specifies whether this controller is bootable]: :(on off)' \
|
|
|
|
'--rename=[Specifies a new name for the storage controller]:name' \
|
|
|
|
'--remove[Removes a storage controller from the VM configuration]' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(bandwidthctl)
|
2022-12-23 05:12:29 +00:00
|
|
|
_vboxmanage_bandwidthctl
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(showmediuminfo)
|
|
|
|
_arguments \
|
|
|
|
'1:medium:(disk dvd floppy)' \
|
|
|
|
'2:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(createmedium)
|
|
|
|
_arguments \
|
|
|
|
'--filename=[Specifies the absolute path name to a file on the host file system]: :_files'\
|
|
|
|
'--size=[Specifies the image capacity in one megabyte units]:size' \
|
|
|
|
'--sizebyte=[Specifies the image capacity in one byte units]:size' \
|
|
|
|
'--diffparent=[Specifies the UUID or absolute path name of parent file]:uuid_or_file' \
|
|
|
|
'--format=[Specifies the file format of the output file]: :(VDI VMDK VHD)' \
|
|
|
|
'--variant[Specifies the file format variant for the target medium]:variant' \
|
|
|
|
'*--property=[Specifies any required file format dependent parameters in key=value form]:value' \
|
|
|
|
'--property-file=[Specifies any propertyrequired file]: :_files' \
|
|
|
|
'1:medium:(disk dvd floppy)' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(modifymedium)
|
|
|
|
_arguments \
|
|
|
|
'--autoreset=[Specifies whether to automatically reset]: :(on off)' \
|
|
|
|
'--compact[Compresses disk images by removing blocks that contain only zeroes]' \
|
|
|
|
'--description=[Specifies a text description of the medium]:desc' \
|
|
|
|
'--move=[Specifies a relative or absolute path to a medium on the host system]: :_files' \
|
|
|
|
'*--property=[Specifies any required file format dependent parameters in key=value form]:value' \
|
|
|
|
'--resize=[Specifes the new capacity of an existing image in MB]:size' \
|
|
|
|
'--resizebyte=[Specifes the new capacity of an existing image in bytes]:size' \
|
|
|
|
'--setlocation=[Specifies the new location of the medium]: :_files' \
|
|
|
|
'--type=[Specifies the new mode type of an existing image]: :(normal immutable writethrough multi-attach shareable readonly)' \
|
|
|
|
'1:medium:(disk dvd floppy)' \
|
|
|
|
'2:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(clonemedium)
|
|
|
|
_arguments \
|
|
|
|
'--existing[Performs the clone operation by overwriting an existing target medium]' \
|
|
|
|
'--format=[Specifies the file format of the target medium]: :(VDI VMDK VHD RAW)' \
|
|
|
|
'--variant=[Specifies the file format variant for the target medium]:variant' \
|
|
|
|
'1:medium:(disk dvd floppy)' \
|
|
|
|
'2:machine:_vboxmachines' \
|
|
|
|
'3:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(encryptmedium)
|
|
|
|
_arguments \
|
|
|
|
'--newpassword=[Specifies the new encryption password]:password' \
|
|
|
|
'--oldpassword=[Specifies the original encryption password]:password' \
|
|
|
|
'--cipher=[Specifies the cipher to use for encryption]: :(AES-XTS128-PLAIN64 AES-XTS256-PLAIN64)' \
|
|
|
|
'--newpasswordid=[Specifies a new password identifier]:password' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(convertfromraw)
|
|
|
|
_arguments \
|
|
|
|
'--format=[Specifies the format of the disk image to create]: :(VDI VMDK VHD)' \
|
|
|
|
'--uuid=[Specifies the Universally Unique Identifier (UUID) of the output file]:uuid' \
|
|
|
|
'--variant=[Specifies any required file format variants for the output file]:variant' \
|
|
|
|
'*: :_files' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(mediumio)
|
2022-12-23 06:28:52 +00:00
|
|
|
_vboxmanage_mediumio
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(setproperty)
|
|
|
|
_arguments \
|
|
|
|
'1: :(autostartdbpath defaultfrontend hwvirtexclusive launguage logginglevel loghistorycount machinefolder proxymode proxyurl vrdeauthlibrary vrdeextpack websrvauthlibrary)' \
|
|
|
|
'2:value:_vboxmanage_setproperty_value' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(usbfilter)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(sharedfolder)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(guestproperty)
|
2022-12-24 00:27:04 +00:00
|
|
|
_vboxmanage_guestproperty
|
2022-12-22 12:36:57 +00:00
|
|
|
;;
|
|
|
|
(guestcontrol)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(debugvm)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(metrics)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(natnetwork)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(hostonlyif)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(hostonlynet)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(dhcpserver)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(usbdevsource)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(extpack)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(updatecheck)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(modifynvram)
|
|
|
|
# TODO
|
|
|
|
;;
|
|
|
|
(discardstate|getextradata|setextradata)
|
|
|
|
_arguments \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(modifyvm|export)
|
|
|
|
local -a options=(${(@f)"$(vboxmanage $words[1] | perl -wln -e 'm{(--[a-zA-Z_-]+) [^]|]+} and print qq{$1:arg}')"})
|
|
|
|
_arguments \
|
|
|
|
$options \
|
|
|
|
':machine:_vboxmachines'
|
|
|
|
;;
|
|
|
|
(controlvm)
|
|
|
|
local -a subcommands=(${(@f)"$(vboxmanage $words[1] | perl -wln -e 'm{^\s+([a-z][a-z-]+)} and print $1')"})
|
|
|
|
_arguments \
|
|
|
|
'1:commands:'"($subcommands)" \
|
|
|
|
':machine:_vboxmachines'
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-22 12:36:57 +00:00
|
|
|
return 0
|
|
|
|
}
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
(( $+functions[_vboxmanage_commands] )) ||
|
|
|
|
_vboxmanage_commands() {
|
|
|
|
local -a commands=(
|
|
|
|
"list:gives information about VirtualBox's current settings"
|
|
|
|
'showvminfo:shows information about a particular virtual machine'
|
|
|
|
'registervm:import a virtual machine definition in an XML file into VirtualBox'
|
|
|
|
'unregistervm:unregisters a virtual machine'
|
|
|
|
'createvm:creates a new XML virtual machine definition file'
|
|
|
|
'modifyvm:changes the properties of a registered virtual machine which is not running'
|
|
|
|
'clonevm:Create a clone of an existing virtual machine'
|
|
|
|
'movevm:Move a virtual machine to a new location on the host system'
|
|
|
|
'encryptvm:Change encryption and passwords of the VM'
|
|
|
|
'cloud:Manage the cloud entities'
|
|
|
|
'cloudprofile:Manage the cloud profiles'
|
|
|
|
'import:imports a virtual appliance in OVF format by copying the virtual disk images and creating virtual machines in VirtualBox'
|
|
|
|
'export:exports one or more virtual machines from VirtualBox into a virtual appliance in OVF format'
|
|
|
|
'signova:Digitally sign an OVA'
|
|
|
|
'startvm:starts a virtual machine that is currently in the "Powered off" or "Saved" states'
|
|
|
|
'controlvm:change the state of a virtual machine that is currently running'
|
|
|
|
'unattended:Unattended guest OS installation'
|
|
|
|
'discardstate:discards the saved state of a virtual machine which is not currently running'
|
|
|
|
'adoptstate:adopt a saved state file (.sav)'
|
|
|
|
'snapshot:control snapshots'
|
|
|
|
'closemedium:removes a hard disk, DVD or floppy image from a VirtualBox media registry'
|
|
|
|
'storageattach:attaches/modifies/removes a storage medium connected to a storage controller'
|
|
|
|
'storagectl:attaches/modifies/removes a storage controller'
|
|
|
|
'bandwidthctl:creates/deletes/modifies bandwidth groups'
|
|
|
|
'showmediuminfo:shows information about a virtual hard disk image'
|
|
|
|
'createmedium:creates a new virtual hard disk image'
|
|
|
|
'modifymedium:change the characteristics of a disk image after it has been created'
|
|
|
|
'clonemedium:duplicates a registered virtual hard disk image to a new image file with a new unique identifier'
|
|
|
|
'mediumproperty:Manage medium properties'
|
|
|
|
'encryptmedium:Manage a DEK-encrypted medium or image'
|
|
|
|
'checkmediumpwd:Check encryption password on a DEK-encrypted medium or a disk image'
|
|
|
|
'convertfromraw:converts a raw disk image to a VirtualBox Disk Image (VDI) file'
|
|
|
|
'mediumio:Medium content access'
|
|
|
|
'getextradata:retrieve string data to a virtual machine or to a VirtualBox configuration'
|
|
|
|
'setextradata:attach string data to a virtual machine or to a VirtualBox configuration'
|
|
|
|
'setproperty:change global settings which affect the entire VirtualBox installation'
|
|
|
|
'usbfilter:used for working with USB filters in virtual machines, or global filters'
|
|
|
|
'sharedfolder:share folders on the host computer with guest operating systems'
|
|
|
|
'guestproperty:get or set properties of a running virtual machine'
|
|
|
|
'guestcontrol:control certain things inside a guest from the host'
|
|
|
|
'debugvm:for experts who want to tinker with the exact details of virtual machine execution'
|
|
|
|
'metrics:monitor the usage of system resources'
|
|
|
|
'natnetwork:add,modify,remove or start NatNetworks'
|
|
|
|
'hostonlyif:change the IP configuration of a host-only network interface'
|
|
|
|
'hostonlynet:Host Only Network management'
|
|
|
|
'dhcpserver:control the DHCP server that is built into VirtualBox'
|
|
|
|
'usbdevsource:Add and remove USB device sources'
|
|
|
|
'extpack:add or remove VirtualBox extension pacnks'
|
|
|
|
'updatecheck:Checks for a new version of Virtualbox'
|
|
|
|
'modifynvram:List and modify the NVRAM content of a virtual machine'
|
|
|
|
)
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
_describe -t subcommands 'subcommand' commands
|
2011-07-22 21:17:16 +00:00
|
|
|
}
|
|
|
|
|
2022-12-22 12:36:57 +00:00
|
|
|
(( $+functions[_vboxmanage_encryptvm] )) ||
|
|
|
|
_vboxmanage_encryptvm() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
'2: :(setencryption checkpassword addpassword removepassword)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
local subcommand=$words[2]
|
|
|
|
if (( $+functions[_vboxmanage_encryptvm_${subcommand}] )); then
|
|
|
|
compset -n 2
|
|
|
|
_vboxmanage_encryptvm_${subcommand} && ret=0
|
|
|
|
else
|
|
|
|
_arguments '*: :_files' && ret=0
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_encryptvm_setencryption] )) ||
|
|
|
|
_vboxmanage_encryptvm_setencryption() {
|
2022-12-23 07:46:30 +00:00
|
|
|
_arguments \
|
2022-12-22 12:36:57 +00:00
|
|
|
'--cipher[specify the new cipher for encryption of the VM]: :(AES-128 AES-256)' \
|
|
|
|
'--new-password[specify the new password for encryption of the VM]: :_files' \
|
|
|
|
'--new-password-id[specify the new ID for the password for encryption of the VM]:id' \
|
|
|
|
'--force[make the system to reencrypt the VM instead of the simple changing the password]'
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_encryptvm_addpassword] )) ||
|
|
|
|
_vboxmanage_encryptvm_addpassword() {
|
|
|
|
_arguments \
|
|
|
|
'--new-password[specify the new password for encryption of the VM]: :_files' \
|
|
|
|
'--new-password-id[specify the new ID for the password for encryption of the VM]:id'
|
|
|
|
}
|
|
|
|
|
2022-12-23 12:59:58 +00:00
|
|
|
(( $+functions[_vboxmanage_cloud] )) ||
|
|
|
|
_vboxmanage_cloud() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(list instance image network)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
local subcommand=$words[1]
|
|
|
|
if (( $+functions[_vboxmanage_cloud_${subcommand}] )); then
|
|
|
|
_vboxmanage_cloud_${subcommand} && ret=0
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_cloud_list] )) ||
|
|
|
|
_vboxmanage_cloud_list() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(instances images)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
local -a state
|
|
|
|
if [[ $words[1] == "instances" ]]; then
|
|
|
|
state=(running paused terminated)
|
|
|
|
else
|
|
|
|
state=(available disabled deleted)
|
|
|
|
fi
|
|
|
|
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--state=[The state of cloud instance]: :'"($state)" \
|
|
|
|
'--compartment-id[A compartment is the logical container used]'
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_cloud_instance] )) ||
|
|
|
|
_vboxmanage_cloud_instance() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(create info termination start pause images)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
case $words[1] in
|
|
|
|
(create)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--domain-name=[Cloud domain where new instance is created]:name' \
|
|
|
|
'--image-id=[Unique identifier which fully identifies a custom image in the Cloud]:id' \
|
|
|
|
'--boot-volume-id=[Unique identifier which fully identifies a boot volume in the Cloud]:id' \
|
|
|
|
'--display-name=[Name for new instance in the Cloud]:name' \
|
|
|
|
'--shape=[The shape of instance, defines the number of CPUs and RAM memory]:shape' \
|
|
|
|
'--subnet=[Unique identifier which fully identifies an existing subnet]:subnet' \
|
|
|
|
'--boot-disk-size=[The size of bootable image in GB]:size' \
|
|
|
|
'--publicip=[Whether the instance will have a public IP or not]: :(true false)' \
|
|
|
|
'--privateip=[Private IP address for the created instance]:ip' \
|
|
|
|
'--public-ssh-key=[Public SSH key used to connect to the instance via SSH]:key' \
|
|
|
|
'--launch-mode=[launch mode]: :(EMULATED NATIVE PARAVIRTUALIZED)' \
|
|
|
|
'--cloud-init-script-path=[Absolute path to the user cloud-init script]: :_files' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(*)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--id=[Unique identifier which fully identify the instance in the Cloud]:id' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_cloud_image] )) ||
|
|
|
|
_vboxmanage_cloud_image() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(create info delete import export)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
case $words[1] in
|
|
|
|
(create)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--display-name=[Name for new image in the Cloud]:name' \
|
|
|
|
'--bucket-name=[Cloud bucket name where an object is located]:name' \
|
|
|
|
'--object-name=[Name of object in the bucket]:name' \
|
|
|
|
'--instance-id=[Unique identifier which fully identifies the instance in the Cloud]:id' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(import)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--bucket-name=[Cloud bucket name where an object is located]:name' \
|
|
|
|
'--object-name=[Name of object in the bucket]:name' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(export)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--display-name=[Name for new image in the Cloud]:name' \
|
|
|
|
'--bucket-name=[Cloud bucket name where an object is located]:name' \
|
|
|
|
'--object-name=[Name of object in the bucket]:name' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(*)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--id=[Unique identifier which fully identify the instance in the Cloud]:id' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_cloud_network] )) ||
|
|
|
|
_vboxmanage_cloud_network() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(setup create update delete info)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
case $words[1] in
|
|
|
|
(setup)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--gateway-os-name=[The name of OS to use for a cloud gateway]:os_name' \
|
|
|
|
'--gateway-os-version=[The version of OS to use for a cloud gateway]:version' \
|
|
|
|
'--gateway-shape=[The instance shape to use for a cloud gateway]:shape' \
|
|
|
|
'--tunnel-network-name=[The name of VCN/subnet to use for tunneling]:name' \
|
|
|
|
'--tunnel-network-range=[The IP address range to use for tunneling]:range' \
|
|
|
|
'--proxy=[The proxy URL to be used in local gateway installation]:proxy' \
|
|
|
|
'--compartment-id=[The compartment to create the tunnel network in]:id' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(create|update)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--name=[The name of an existing cloud network descriptor]:name' \
|
|
|
|
'--network-id=[The unique identifier of an existing subnet in the cloud]:id' \
|
|
|
|
'(--enable --disable)--enable[Enable the network descriptor]' \
|
|
|
|
'(--enable --disable)--disable[Disable the network descriptor]' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(delete|info)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--name=[The name of an existing cloud network descriptor]:name' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
2022-12-23 07:46:30 +00:00
|
|
|
(( $+functions[_vboxmanage_cloudprofile] )) ||
|
|
|
|
_vboxmanage_cloudprofile() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(add update delete show)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
case $words[1] in
|
|
|
|
(add|update)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile' \
|
|
|
|
'--clouduser=[The name which fully identifies the user in the specified cloud provider]:user' \
|
|
|
|
'--fingerprint=[Fingerprint for the key pair being used]:finger_print' \
|
|
|
|
'--keyfile=[Full path and filename of the private key]: :_files' \
|
|
|
|
'--passphrase=[Passphrase used for the key, if it is encrypted]:pass' \
|
|
|
|
'--tenancy=[ID of your tenancy]:tenancy' \
|
|
|
|
'--compartment=[ID of your compartment]:compartment' \
|
|
|
|
'--region=[region name]:region' && ret=0
|
|
|
|
;;
|
|
|
|
(*)
|
|
|
|
_arguments \
|
|
|
|
'--provider=[Short cloud provider name]:provider' \
|
|
|
|
'--profile=[Cloud profile name]:profile'
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
2022-12-23 09:13:26 +00:00
|
|
|
(( $+functions[_vboxmanage_unattended] )) ||
|
|
|
|
_vboxmanage_unattended() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(detect install)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
case $words[1] in
|
|
|
|
(detect)
|
|
|
|
_arguments \
|
|
|
|
'--iso=[The installation ISO to run the detection on]: :_files' \
|
|
|
|
'--machine-readable[Produce output that is simpler to parse from a script]' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(install)
|
|
|
|
_arguments \
|
|
|
|
'--iso=[The installation ISO to run the detection on]: :_files' \
|
|
|
|
'--user=[The login name]:user' \
|
|
|
|
'--password=[The login password]:password' \
|
|
|
|
'--full-user-name=[The full user name]:full_name' \
|
|
|
|
'--key=[The guest OS product key]:key' \
|
|
|
|
'--install-additions[Install the VirtualBox guest additions]' \
|
|
|
|
'--additions-iso=[Path to the VirtualBox guest additions ISO]: :_files' \
|
|
|
|
'--install-txs[Whether to install the test execution service from the VirtualBox ValidationKit]' \
|
|
|
|
'--validation-kit-iso=[Path to the VirtualBox ValidationKit ISO]: :_files' \
|
|
|
|
'--locale=[The base locale specification for the guest]:locale' \
|
|
|
|
'--country=[The two letter country code]:country' \
|
|
|
|
'--time-zone=[The time zone to set up the guest OS with]:timezone' \
|
|
|
|
'--hostname=[The fully qualified domain name of the guest machine]:hostname' \
|
|
|
|
'--package-selection-adjustment=[Adjustments to the guest OS packages/components selection]:adjustment' \
|
|
|
|
'--dry-run[Do not create any files or make any changes to the VM configuration]' \
|
|
|
|
'--start-vm=[Start the VM using the front end given by session-type]:session_type' \
|
|
|
|
'--auxiliary-base-path=[The path prefix to the media related files generated for the installation]: :_files' \
|
|
|
|
'--image-index=[Windows installation image index]:index' \
|
|
|
|
'--script-template=[The unattended installation script template]: :_files' \
|
|
|
|
'--post-install-template=[The post installation script template]: :_files' \
|
|
|
|
'--post-install-command=[A single command to run after the installation is completed]:command' \
|
|
|
|
'--extra-install-kernel-parameter=[List of extra linux kernel parameters to use during the installation]:param' \
|
|
|
|
'--language=[Specifies the UI language for a Windows installation]:language' \
|
|
|
|
'1:machine:_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
2022-12-23 11:55:17 +00:00
|
|
|
(( $+functions[_vboxmanage_snapshot] )) ||
|
|
|
|
_vboxmanage_snapshot() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
'2: :(take delete restore restorecurrent edit list showvminfo)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
compset -n 2
|
|
|
|
case $words[1] in
|
|
|
|
(take)
|
|
|
|
_arguments \
|
|
|
|
'--description=[Specifies a description of the snapshot]:description' \
|
|
|
|
'--live[Specifies that the VM is not stopped while you create the snapshot]' \
|
|
|
|
'--uniquename=[unique name]' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(edit)
|
|
|
|
_arguments \
|
|
|
|
'--current[Specifies that you update the current version of the snapshot]' \
|
|
|
|
'--description=[Specifies a new description for the snapshot]:description' \
|
|
|
|
'--name=[Specifies a new name for the snapshot]:name' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(list)
|
|
|
|
_arguments \
|
|
|
|
'--details[Specifies that the output shows detailed information about the snapshot]' \
|
|
|
|
'--machinereadable[Specifies that the output is shown in a machine-readable format]' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
2022-12-23 05:12:29 +00:00
|
|
|
(( $+functions[_vboxmanage_bandwidthctl] )) ||
|
|
|
|
_vboxmanage_bandwidthctl() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
'2: :(add list remove set)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
local subcommand=$words[2]
|
|
|
|
if (( $+functions[_vboxmanage_bandwidthctl_${subcommand}] )); then
|
|
|
|
compset -n 2
|
|
|
|
_vboxmanage_bandwidthctl_${subcommand} && ret=0
|
|
|
|
else
|
|
|
|
_arguments '*: :_files' && ret=0
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_bandwidthctl_add] )) ||
|
|
|
|
_vboxmanage_bandwidthctl_add() {
|
|
|
|
_arguments \
|
|
|
|
'--limit=[Specifies the bandwidth limit for a bandwidth group]:limit' \
|
|
|
|
'--type=[Specifies the type of the bandwidth group]: :(disk network)'
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_bandwidthctl_list] )) ||
|
|
|
|
_vboxmanage_bandwidthctl_list() {
|
|
|
|
_arguments \
|
|
|
|
'--machinereadable[Outputs the information about the bandwidth groups in name-value pairs]'
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_bandwidthctl_set] )) ||
|
|
|
|
_vboxmanage_bandwidthctl_set() {
|
|
|
|
_arguments \
|
|
|
|
'--limit=[Specifies the bandwidth limit for a bandwidth group]:limit'
|
|
|
|
}
|
|
|
|
|
2022-12-23 06:28:52 +00:00
|
|
|
(( $+functions[_vboxmanage_mediumio] )) ||
|
|
|
|
_vboxmanage_mediumio() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(formatfat cat stream)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
local subcommand=$words[1]
|
|
|
|
if (( $+functions[_vboxmanage_mediumio_${subcommand}] )); then
|
|
|
|
_vboxmanage_mediumio_${subcommand} && ret=0
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_mediumio_formatfat] )) ||
|
|
|
|
_vboxmanage_mediumio_formatfat() {
|
|
|
|
_arguments \
|
|
|
|
'--disk=[Either the UUID or filename of a harddisk image]: :_files' \
|
|
|
|
'--dvd=[Either the UUID or filename of a DVD image]: :_files' \
|
|
|
|
'--floppy=[Either the UUID or filename of a floppy image]: :_files' \
|
|
|
|
'--password-file=[The name of a file containing the medium encryption password]: :_files' \
|
|
|
|
'--quick[Quickformat the medium]'
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_mediumio_cat] )) ||
|
|
|
|
_vboxmanage_mediumio_cat() {
|
|
|
|
_arguments \
|
|
|
|
'--disk=[Either the UUID or filename of a harddisk image]: :_files' \
|
|
|
|
'--dvd=[Either the UUID or filename of a DVD image]: :_files' \
|
|
|
|
'--floppy=[Either the UUID or filename of a floppy image]: :_files' \
|
|
|
|
'--password-file=[The name of a file containing the medium encryption password]: :_files' \
|
|
|
|
'--hex[Dump as hex bytes]' \
|
|
|
|
'--offset=[The byte offset in the medium to start]:offset' \
|
|
|
|
'--size=[The number of bytes to dump]:size' \
|
|
|
|
'--output=[The output filename]: :_files'
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_vboxmanage_mediumio_stream] )) ||
|
|
|
|
_vboxmanage_mediumio_stream() {
|
|
|
|
_arguments \
|
|
|
|
'--disk=[Either the UUID or filename of a harddisk image]: :_files' \
|
|
|
|
'--dvd=[Either the UUID or filename of a DVD image]: :_files' \
|
|
|
|
'--floppy=[Either the UUID or filename of a floppy image]: :_files' \
|
|
|
|
'--password-file=[The name of a file containing the medium encryption password]: :_files' \
|
|
|
|
'--format=[The format of the destination image]:format' \
|
|
|
|
'--variant=[The medium variant for the destination]:variant' \
|
|
|
|
'--output=[The output filename]: :_files'
|
|
|
|
}
|
|
|
|
|
2022-12-24 00:27:04 +00:00
|
|
|
(( $+functions[_vboxmanage_guestproperty] )) ||
|
|
|
|
_vboxmanage_guestproperty() {
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
_arguments -C \
|
|
|
|
'1: :(get enumerate set unset wait)' \
|
|
|
|
'*:: :->arg' \
|
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(arg)
|
|
|
|
case $words[1] in
|
|
|
|
(enumerate)
|
|
|
|
_arguments \
|
|
|
|
'--relative[Display the timestamp relative to current time]' \
|
|
|
|
'--no-timestamp[Do not display the timestamp of the last update]' \
|
|
|
|
'--no-flags[Do not display the flags]' \
|
|
|
|
'--old-format[Use the output format from VirtualBox 6]' \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(get)
|
|
|
|
_arguments \
|
|
|
|
'--verbose[Provides the property value, timestamp, and any specified value attributes]' \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(set)
|
|
|
|
_arguments \
|
|
|
|
'--flags=[Specify the additional attributes of the value]: :(TRANSIENT TRANSRESET RDONLYGUEST RDONLYHOST READONLY)' \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(wait)
|
|
|
|
_arguments \
|
|
|
|
'1: :_vboxmachines' \
|
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
return $ret
|
|
|
|
}
|
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
(( $+functions[_vboxheadless] )) ||
|
|
|
|
_vboxheadless() {
|
|
|
|
local ret=1
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
_arguments \
|
|
|
|
'--startvm[Start given VM]:machine:_vboxmachines' \
|
|
|
|
"--vrde[Enable (default) or disable the VRDE server or don't change the setting]: :(on off config)" \
|
|
|
|
'--vrdeproperty[Set a VRDE property]:name' \
|
|
|
|
'(--settingspw --settingspwfile)--settingspw[Specify the settings password]:password' \
|
|
|
|
'(--settingspw --settingspwfile)--settingspwfile[Specify a containing the settings password]: :_files' \
|
|
|
|
'--stat-paused[Start the VM in paused state]' \
|
|
|
|
'--capture[Record the VM screen output to a file]' \
|
|
|
|
'--width[Frame width when recording]:width' \
|
|
|
|
'--height[Frame height when recording]:height' \
|
|
|
|
'--bitrate[Recording bit rate when recording]:bitrate' \
|
|
|
|
'--filename[File name when recording.]:filename:_files' \
|
|
|
|
&& ret=0
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
return $ret
|
|
|
|
}
|
2011-07-22 21:17:16 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
(( $+functions[_vboxmanage_list_args] )) ||
|
|
|
|
_vboxmanage_list_args() {
|
|
|
|
local -a args=(vms runningvms ostypes hostdvds hostfloppies
|
|
|
|
intnets bridgedifs hostonlyifs natnets dhcpservers
|
|
|
|
hostinfo hostcpuids hddbackends hdds dvds floppies
|
|
|
|
usbhost usbfilters systemproperties extpacks
|
|
|
|
groups webcams screenshotformats cloudproviders
|
|
|
|
cloudprofiles cloudnets)
|
2022-01-25 16:31:53 +00:00
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
_values 'args' $args
|
2011-07-22 21:17:16 +00:00
|
|
|
}
|
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
(( $+functions[_vboxmachines] )) ||
|
|
|
|
_vboxmachines() {
|
|
|
|
local -a machines=(${(@f)"$(vboxmanage list vms | grep -v '<inaccessible>' | perl -wln -e 'm{^"([^"]+)"} and print $1')"})
|
|
|
|
_values 'machines' $machines
|
2011-07-22 21:17:16 +00:00
|
|
|
}
|
|
|
|
|
2022-12-13 13:18:12 +00:00
|
|
|
(( $+functions[_vboxostypes] )) ||
|
|
|
|
_vboxostypes() {
|
|
|
|
local -a os=(${(@f)"$(vboxmanage list ostypes | awk '/^ID:/{ print $2 }')"})
|
|
|
|
_values 'machines' $os
|
2011-07-22 21:17:16 +00:00
|
|
|
}
|
|
|
|
|
2022-12-22 05:32:56 +00:00
|
|
|
(( $+functions[_vboxmanage_setproperty_value] )) ||
|
|
|
|
_vboxmanage_setproperty_value() {
|
|
|
|
case $words[2] in
|
|
|
|
(autostartdbpath)
|
|
|
|
_arguments '*: :_files'
|
|
|
|
;;
|
|
|
|
(machinefolder)
|
|
|
|
_arguments '*: :_files -/'
|
|
|
|
;;
|
|
|
|
(proxymode)
|
|
|
|
local -a mode=(manual noproxy system)
|
|
|
|
_values 'proxymode' $mode
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
2011-07-22 21:17:16 +00:00
|
|
|
_virtualbox "$@"
|
2012-08-23 15:18:49 +00:00
|
|
|
|
|
|
|
# Local Variables:
|
|
|
|
# mode: Shell-Script
|
|
|
|
# sh-indentation: 2
|
|
|
|
# indent-tabs-mode: nil
|
|
|
|
# sh-basic-offset: 2
|
|
|
|
# End:
|
|
|
|
# vim: ft=zsh sw=2 ts=2 et
|