ohmyzsh/plugins/virtualbox/virtualbox.plugin.zsh
2024-10-02 15:28:42 +01:00

85 lines
2.2 KiB
Bash

# VirtualBox aliases
ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX="${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX:-vbox}"
# VBoxManage
declare -A manage_commands=(
["start"]="startvm"
["start-headless"]="startvm --type=headless"
["clone"]="clonevm --register"
["create"]="createvm --register"
["create-medium"]="createmedium"
["discard"]="discardstate"
["delete"]="unregistervm --delete"
["control"]="controlvm"
["info"]="showvminfo"
["list"]="list"
)
for c in "${(k)manage_commands[@]}"; do
alias "${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-${c}"="VBoxManage ${manage_commands[${c}]}"
done
unset c manage_commands
# Functions
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-poweroff() {
VBoxManage controlvm "$1" poweroff
}
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-shutdown() {
VBoxManage controlvm "$1" shutdown
}
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-pause() {
VBoxManage controlvm "$1" pause
}
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-resume() {
VBoxManage controlvm "$1" resume
}
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-save() {
VBoxManage controlvm "$1" savestate
}
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-reboot() {
VBoxManage controlvm "$1" reboot
}
function ${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-reset() {
VBoxManage controlvm "$1" reset
}
alias "${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-stop"="${ZSH_PLUGIN_VIRTUALBOX_ALIAS_PREFIX}-shutdown"
# VirtualBox prompt
function virtualbox_prompt_info() {
if [[ -n "${ZSH_THEME_VIRTUALBOX_PROMPT_COUNT}" ]]; then
local vm_count="$(VBoxManage list runningvms | wc -l)"
local vm_total="$(VBoxManage list vms | wc -l)"
echo -n "${ZSH_THEME_VIRTUALBOX_PROMPT_PREFIX}"
echo -n "${vm_count} / ${vm_total}"
echo -n "${ZSH_THEME_VIRTUALBOX_PROMPT_SUFFIX}"
fi
local vm_name
for vm_name in "$@"; do
echo -n "${ZSH_THEME_VIRTUALBOX_PROMPT_PREFIX}"
if [[ -n "${ZSH_THEME_VIRTUALBOX_PROMPT_CAPS}" ]]; then
echo -n "${(U)vm_name:gs/%/%%}:"
else
echo -n "${vm_name:gs/%/%%}:"
fi
if VBoxManage list runningvms | grep -w "\"${vm_name}\"" &>/dev/null; then
echo -n "${ZSH_THEME_VIRTUALBOX_PROMPT_RUNNING}"
else
echo -n "${ZSH_THEME_VIRTUALBOX_PROMPT_NOTRUNNING}"
fi
echo -n "${ZSH_THEME_VIRTUALBOX_PROMPT_SUFFIX}"
done
}