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