35 lines
1.1 KiB
YAML
35 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}}')
|