mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2025-12-16 12:20:40 +01:00
feat(virtualbox): add VirtualBox plugin
This commit is contained in:
85
plugins/virtualbox/virtualbox.plugin.zsh
Normal file
85
plugins/virtualbox/virtualbox.plugin.zsh
Normal file
@@ -0,0 +1,85 @@
|
||||
# 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
|
||||
}
|
||||
Reference in New Issue
Block a user