34 lines
1.1 KiB
YAML
34 lines
1.1 KiB
YAML
---
|
|
version: '3'
|
|
|
|
tasks:
|
|
clear:
|
|
deps:
|
|
- :install:software:virtualbox
|
|
summary: |
|
|
# Remove All VMs / Reset
|
|
|
|
This task will remove all the VirtualBox VMs. It is useful in scenarios
|
|
where VirtualBox is being called through automation and things can
|
|
potentially break. When they break, they need a reset.
|
|
|
|
**Example resetting all VMs:**
|
|
`task app:virtualbox:clear`
|
|
|
|
There is the capability of only resetting VMs that match a certain pattern.
|
|
|
|
**Example resetting all VMs matching a pattern:**
|
|
`task app:virtualbox:clear -- 'macOS'`
|
|
vars:
|
|
DEFAULT_PATTERN: default_
|
|
cmds:
|
|
- cmd: killall -9 VBoxHeadless
|
|
ignore_error: true
|
|
- |
|
|
while read VM; do
|
|
VM_NAME="$(echo $VM | sed 's/^"\(.*\)" {.*}/\1/')"
|
|
VM_UUID="$(echo $VM | sed 's/^".*".{\(.*\)}/\1/')"
|
|
vboxmanage startvm "$VM_UUID" --type emergencystop || true
|
|
vboxmanage unregistervm "$VM_UUID" || true
|
|
rm -rf "$HOME/VirtualBox VMs/$VM_NAME" || true
|
|
done < <(vboxmanage list vms | grep '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.DEFAULT_PATTERN}}{{end}}')
|