diff --git a/shemum b/shemum index 141698b..6036d6f 100755 --- a/shemum +++ b/shemum @@ -42,48 +42,75 @@ case $OS_NAME in ;; esac +# Functions + +# Virtual machine removal +remove_func function { + rm -r $ROOT_PATH/$OS_NAME +} + +# Virtual machine start without a console +start_func function { + qemu-system-x86_64 -boot c \ + -display none \ + -drive file=$IMG_PATH,format=raw \ + -m $RAM -smp $CPU +} + +# Virtual machine start with a console +console_func function { + qemu-system-x86_64 -boot c \ + -display curses \ + -drive file=$IMG_PATH,format=raw \ + -m $RAM -smp $CPU +} + +# Virtual machine initialization with a console +init_func function { + mkdir -p "$ROOT_PATH/$OS_NAME" + qemu-img create $IMG_PATH $DISK_SIZE + if [ ! -f $ISO_PATH ] && [ ! -z $INSTALL_IMG ]; then + echo $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 + fi + qemu-system-x86_64 -boot d \ + -display curses \ + -drive file=$ISO_PATH,media=cdrom \ + -drive file=$IMG_PATH,format=raw \ + -m $RAM -smp $CPU +} + +# Display usage +usage_func function { + printf "Usage: shemum [init] " + printf " init initialize a virtual machine" + printf " start start a QEMU virtual machine without console output" + printf " console start a QEMU virtual machine with console output" + printf " remove remove virtual machine directory and all it's contents" +} + # Options case $OPTION in # Initializes the VM and starts the installer image. "init") - mkdir -p "$ROOT_PATH/$OS_NAME" - qemu-img create $IMG_PATH $DISK_SIZE - if [ ! -f $ISO_PATH ] && [ ! -z $INSTALL_IMG ]; then - echo $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 - fi - qemu-system-x86_64 -boot d \ - -display curses \ - -drive file=$ISO_PATH,media=cdrom \ - -drive file=$IMG_PATH,format=raw \ - -m $RAM -smp $CPU + init_func ;; "console") - qemu-system-x86_64 -boot c \ - -display curses \ - -drive file=$IMG_PATH,format=raw \ - -m $RAM -smp $CPU + console_func ;; "start") - qemu-system-x86_64 -boot c \ - -display none \ - -drive file=$IMG_PATH,format=raw \ - -m $RAM -smp $CPU + start_func ;; "remove") - rm -r $ROOT_PATH/$OS_NAME + remove_func ;; *) - echo "Usage: shemum [init] " - echo " init initialize a virtual machine" - echo " start start a QEMU virtual machine without console output" - echo " console start a QEMU virtual machine with console output" - echo " remove remove virtual machine directory and all it's contents" + usage_func esac