Genesis
This commit is contained in:
commit
e236ec56ec
3 changed files with 86 additions and 0 deletions
24
README.md
Normal file
24
README.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# VirtualBox ZSH Plugin
|
||||||
|
|
||||||
|
This plugin provides several aliases for VirtualBox:
|
||||||
|
|
||||||
|
* `vb list` - List all VMs
|
||||||
|
* `vb start <VM>` - Start VM
|
||||||
|
* `vb stop <VM>` - Send poweroff signal to VM via ACPI, call hard power on failure
|
||||||
|
* `vb gui <VM>` - Attach to the GUI of VM
|
||||||
|
* `vb suspend <VM>` - Suspend VM
|
||||||
|
* `vb restart <VM>` - Restart VM (calls `vb stop`, then `vb start`)
|
||||||
|
* `vb reset <VM>` - Send reset signal to VM
|
||||||
|
* `vb status [VM]` - Show status of VM (show all VMs if no VM name is passed)
|
||||||
|
* `vb snaplist <VM>` - list snapshots for VM
|
||||||
|
* `vb snapshot <VM> [NAME]` - create snapshot for VM (optional: define a name for the snapshot)
|
||||||
|
* `vb snaprestore <VM> <NAME>` - restore snapshot for VM
|
||||||
|
* `vb snapdel <VM> <NAME>` - delete snapshot of VM
|
||||||
|
|
||||||
|
Autocompletion for parameters and VMs and their snapshots is enabled.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Antigen
|
||||||
|
|
||||||
|
`antigen bundle https://gitlab.com/smark/virtualbox.zshplugin.git`
|
38
_vb
Normal file
38
_vb
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#compdef vb
|
||||||
|
|
||||||
|
_vb() {
|
||||||
|
local state
|
||||||
|
|
||||||
|
_arguments -C '1: :->actions' '2: :->vms' '3: :->snapshots'
|
||||||
|
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(actions)
|
||||||
|
local actions
|
||||||
|
actions=("list:List all VMs"
|
||||||
|
"start:Start VM"
|
||||||
|
"stop:Stop VM"
|
||||||
|
"suspend:Suspend VM"
|
||||||
|
"restart:Restart VM"
|
||||||
|
"reset:Reset VM"
|
||||||
|
"status:Show status"
|
||||||
|
"snapshot:Create new snapshot"
|
||||||
|
"snaprestore:Restore snapshots"
|
||||||
|
"snaplist:List snapshots"
|
||||||
|
"snapdel:Delete snapshot")
|
||||||
|
_describe 'actions' actions
|
||||||
|
;;
|
||||||
|
(vms)
|
||||||
|
compadd -- $(vboxmanage list vms | awk '{print $1}' | xargs)
|
||||||
|
;;
|
||||||
|
(snapshots)
|
||||||
|
local snapshot_list
|
||||||
|
[[ $line[1] =~ 'snapdel|snaprestore' ]] || return
|
||||||
|
snapshot_list=$(vboxmanage snapshot $line[2] list)
|
||||||
|
[[ $? -ne 0 ]] && return
|
||||||
|
compadd -- $(awk '{print $2}' <<<$snapshot_list)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_vb "$@"
|
24
virtualbox.plugin.zsh
Normal file
24
virtualbox.plugin.zsh
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
vb() {
|
||||||
|
case $1 in
|
||||||
|
list) vboxmanage list vms | awk '{print $1}' | tr -d '"' | sort;;
|
||||||
|
start) vboxmanage startvm $2 --type headless;;;
|
||||||
|
gui) vboxmanage startvm $2 --type separate;;
|
||||||
|
stop) vboxmanage controlvm $2 acpipowerbutton || vboxmanage controlvm $2 poweroff;;
|
||||||
|
suspend) vboxmanage controlvm $2 savestate;;
|
||||||
|
restart) vb stop $2; vb start $2;;
|
||||||
|
reset) vboxmanage controlvm $2 reset;;
|
||||||
|
status)
|
||||||
|
VMS=$2
|
||||||
|
[[ $# -eq 1 ]] && VMS=$(vb list)
|
||||||
|
for VM in ${=VMS}; do
|
||||||
|
echo -n "$VM: "
|
||||||
|
vboxmanage list runningvms | grep -q $VM && echo "running" || echo "stopped"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
snapshot) vboxmanage snapshot $2 take ${3:-"$(date +%s)-$2"};;
|
||||||
|
snaprestore) vboxmanage snapshot $2 restore ${3};;
|
||||||
|
snaplist) vboxmanage snapshot $2 list | cut -d: -f2-;;
|
||||||
|
snapdel) vboxmanage snapshot $2 delete $3;;
|
||||||
|
*) echo "unknown parameter: $1"; return 1;;
|
||||||
|
esac
|
||||||
|
}
|
Loading…
Reference in a new issue