#!/usr/bin/env bash set -Eeuo pipefail printf '%s\n' "$*" >> "$MOCK_VBOX_LOG" command_name="${1:-}" uuid="${2:-}" case "$command_name" in showvminfo) [[ -r "$MOCK_VBOX_STATE/vm-$uuid" ]] || exit 1 cat "$MOCK_VBOX_STATE/vm-$uuid" ;; getextradata) key_slug="${3//\//_}" if [[ ! -r "$MOCK_VBOX_STATE/extra-$uuid-$key_slug" ]]; then printf '%s\n' 'No value set!' exit 0 fi printf 'Value: ' cat "$MOCK_VBOX_STATE/extra-$uuid-$key_slug" ;; modifyvm) [[ "${3:-}" == --groups ]] awk -v groups="${4:-}" ' $1 !~ /^groups=/ { print } END { printf "groups=\"%s\"\n", groups } ' "$MOCK_VBOX_STATE/vm-$uuid" > "$MOCK_VBOX_STATE/vm-$uuid.tmp" mv "$MOCK_VBOX_STATE/vm-$uuid.tmp" "$MOCK_VBOX_STATE/vm-$uuid" ;; setextradata) key_slug="${3//\//_}" printf '%s\n' "${4:-}" > "$MOCK_VBOX_STATE/extra-$uuid-$key_slug" ;; unregistervm|closemedium) printf '%s\n' 'destructive VirtualBox command invoked' >&2 exit 99 ;; *) exit 2 ;; esac