diff --git a/bin/qemush b/bin/qemush index 1fd16d0..7e0bff3 100755 --- a/bin/qemush +++ b/bin/qemush @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# version=0.7.0 +# version=0.8.0 # Re-exec the script as qemu via sudo (only if needed) [ "$(whoami)" != qemu ] && exec sudo -E -H -u qemu -- "$0" "$@" @@ -9,6 +9,7 @@ PATH="${HOME}/launchers:${HOME}/bin:${PATH}" # Aliases alias ls='ls --color=auto' +alias exec='exec ' shopt -s expand_aliases # Set a restrictive umask to make sure qemu user files are private @@ -192,15 +193,22 @@ public_spice() { socat TCP-LISTEN:"${port},reuseaddr,fork" UNIX-CLIENT:"$(pathof spice)" } -# Retrieve user requested function -function="$1" -shift +function_exists() { + declare -F \ + | cut -d \ -f 3- \ + | grep '^public_' \ + | sed 's/^public_//' \ + | grep -q "^${1}\$" +} # Defauts to `active` if no function is supplied; else checks for a public # function named after the argument; else fails -if [ -z "$function" ]; then +if [ -z "$1" ]; then public_running -elif declare -F | cut -d \ -f 3- | grep '^public_' | sed 's/^public_//' | grep -q "^${function}$"; then +elif function_exists "$1"; then + function=$1 + shift + "public_${function}" "$@" else error_usage