diff --git a/shemum b/shemum index 6036d6f..f60a354 100755 --- a/shemum +++ b/shemum @@ -3,6 +3,8 @@ # Author: Adrian Erik Hoemann # Date: 9.18.2024 +# TODO: Implement operating system installer variable list. + # Debug mode # To enable debug mode remove the comment. # Default: true @@ -28,29 +30,53 @@ IMG_PATH="$ROOT_PATH/$OS_NAME/$OS_NAME.img" # Sources virtual machine specific values . "$ROOT_PATH/$OS_NAME/.env" -# Defines install image repository. -case $OS_NAME in - "openbsd") - INSTALL_IMG="https://cdn.openbsd.org/pub/OpenBSD/7.5/i386/cd75.iso" - ;; - "debian") - INSTALL_IMG="" - ;; - *) - echo "$OS_NAME is not an option" >&2 - exit 1 - ;; -esac - # Functions +# Defines install image source +def_os_source() { + case $OS_NAME in + "openbsd") + INSTALL_IMG="https://cdn.openbsd.org/pub/OpenBSD/7.5/i386/cd75.iso" + ;; + "debian") + INSTALL_IMG="" + ;; + *) + err_func "INSTALL_IMG for $OS_NAME not found" + ;; + esac +} + +check_func() { + if [ -z $OS_NAME ] + err_func "Operating system is empty" + fi + if [ -z $INSTALL_IMG ] + info_func "$INSTALL_IMG is not set" + fi + +} + +err_func() { + printf "$@" >&2 + exit 1 +} + +warn_func() { + printf "$@" >&2 +} + +info_func() { + printf "$@" >&1 +} + # Virtual machine removal -remove_func function { +remove_func() { rm -r $ROOT_PATH/$OS_NAME } # Virtual machine start without a console -start_func function { +start_func() { qemu-system-x86_64 -boot c \ -display none \ -drive file=$IMG_PATH,format=raw \ @@ -58,7 +84,7 @@ start_func function { } # Virtual machine start with a console -console_func function { +console_func() { qemu-system-x86_64 -boot c \ -display curses \ -drive file=$IMG_PATH,format=raw \ @@ -66,17 +92,17 @@ console_func function { } # Virtual machine initialization with a console -init_func function { +init_func() { + def_os_source mkdir -p "$ROOT_PATH/$OS_NAME" qemu-img create $IMG_PATH $DISK_SIZE if [ ! -f $ISO_PATH ] && [ ! -z $INSTALL_IMG ]; then - echo $INSTALL_IMG + info_func "Fetching $OSNAME installer at: $INSTALL_IMG" curl -o $ISO_PATH $INSTALL_IMG elif [ ! -z $INSTALL_IMG ]; then - echo "Current INSTALL_IMG for $OS_NAME: $ISO_PATH" - else: - echo "Install image path is missing" >&2 - exit 1 + info_func "Current INSTALL_IMG for $OS_NAME: $ISO_PATH" + else + err_func "Install image path is missing" fi qemu-system-x86_64 -boot d \ -display curses \ @@ -86,7 +112,7 @@ init_func function { } # Display usage -usage_func function { +usage_func() { printf "Usage: shemum [init] " printf " init initialize a virtual machine" printf " start start a QEMU virtual machine without console output"