From 8c96623ad7c9d4edbcf1f82b648b5a29eb2bc1dc Mon Sep 17 00:00:00 2001 From: Lukas Greve Date: Sun, 15 Jun 2025 14:32:46 +0200 Subject: [PATCH] make selection or URI options for qemu more robust. Allow the user to just use Enter Only allow selection of files that starts with virtual (this script is only used to deploy virtual machine) Reworked some comments --- scripts/deploy-distro.sh | 71 ++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/scripts/deploy-distro.sh b/scripts/deploy-distro.sh index ad7d6ce..5ca612c 100755 --- a/scripts/deploy-distro.sh +++ b/scripts/deploy-distro.sh @@ -5,17 +5,17 @@ DEFAULT_MEMORY=4096 DEFAULT_DISK_SIZE=10 # Prompt user for VM memory size -read -r -p "Provide memory desired VM memory in MB or press Enter to keep default value of $DEFAULT_MEMORY): " memory_size +read -r -p "Provide desired VM memory in MB or press Enter to keep default value of $DEFAULT_MEMORY MB): " memory_size memory_size=${memory_size:-$DEFAULT_MEMORY} # Validate memory size if ! [[ "$memory_size" =~ ^[0-9]+$ ]] || (( memory_size < 2048 )); then - echo "Invalid memory size. Must be a number greater than or equal to 2048. Using default value of $DEFAULT_MEMORY." + echo "Invalid memory size. Must be a number greater than or equal to 2048. Using default value of $DEFAULT_MEMORY MB." memory_size=$DEFAULT_MEMORY fi # Prompt user for VM disk size -read -r -p "Provide desired disk size of VM in GB or press Enter to use default disk size of $DEFAULT_DISK_SIZE: " disk_size +read -r -p "Provide desired disk size of VM in GB or press Enter to use default disk size of $DEFAULT_DISK_SIZE GB: " disk_size disk_size=${disk_size:-$DEFAULT_DISK_SIZE} # Validate disk size @@ -24,44 +24,43 @@ if ! [[ "$disk_size" =~ ^[0-9]+$ ]] || (( disk_size < 10 )); then disk_size=$DEFAULT_DISK_SIZE fi -# Define URI options for qemu -uri_options=("qemu:///system" "qemu:///session") +# Set the choices +CHOICE_SYSTEM="qemu:///system" +CHOICE_SESSION="qemu:///session" -# Prompt user to select URI -select uri in "${uri_options[@]}"; do - if [[ -n "$uri" ]]; then - break # Exit the select loop if a valid option is chosen - else - echo "Invalid selection. Please choose a valid URI." - fi -done +# Display the choices to the user +echo "Please select an option or press Enter to keep default value of $CHOICE_SESSION):" +echo "1) $CHOICE_SYSTEM (system-based or rootfull virtual machine)" +echo "2) $CHOICE_SESSION (session-based or rootless virtual machine)" -case "$uri" in - qemu:///session) - disk_path="$HOME/.local/share/libvirt/images/" - ;; - qemu:///system) - disk_path="/var/lib/libvirt/images/" - ;; +# Prompt the user for input +IFS= read -r -p "Enter your choice (1 or 2): " user_choice + +# Validate the user's input +if [[ ! "$user_choice" =~ ^[12]$ ]]; then + echo "Invalid choice. Defaulting to session-based VM." + uri="$CHOICE_SESSION" # Default to session-based if input is invalid +else + # Determine the selected option + case "$user_choice" in + 1) + uri="$CHOICE_SYSTEM" + ;; + 2) + uri="$CHOICE_SESSION" + ;; *) - echo "Invalid URI selected. Exiting." - exit 1 -esac + echo "Unexpected error: Invalid choice. This should not happen due to validation." + exit 1 + ;; + esac +fi -case "$uri" in - qemu:///session) - network_type="user" - ;; - qemu:///system) - network_type="default" - ;; - *) - echo "Invalid URI selected. Exiting." - exit 1 -esac +# Display the selected option (optional) +echo "You selected: $uri" -# Get a list of files in "dishes" directory, restricted to those starting with "virtual" -mapfile -t dish_name < <(find "dishes/" -maxdepth 1 -type f -printf "%f\n" | sed 's/\.[^.]*$//') +# Get a list of files in "dishes" directory +mapfile -t dish_name < <(find "dishes/" -maxdepth 1 -type f \( -name "virtual*" \) -printf "%f\n" | sed 's/\.[^.]*$//') # Check if there are any files if [ ${#dish_name[@]} -eq 0 ]; then