Expand and refactor install_script menu options

Added new preset and menu options for App Defaults, Diagnostics, and Storage Settings. Refactored the menu to be dynamically built and improved handling for each choice, including better diagnostics toggling and support for app-specific defaults. This enhances flexibility and user experience in the installation script.
This commit is contained in:
CanbiZ 2025-09-16 13:05:53 +02:00
parent 9a1f0de47e
commit 6ca38e23ae

View File

@ -1450,114 +1450,138 @@ install_script() {
# --- PRESET support --- # --- PRESET support ---
if [ -n "${PRESET:-}" ]; then if [ -n "${PRESET:-}" ]; then
case "$PRESET" in case "$PRESET" in
DEFAULT | default | 1) DEFAULT | default | 1)
CHOICE="1" CHOICE="1"
;; ;;
VERBOSE | verbose | 2) VERBOSE | verbose | 2)
CHOICE="2" CHOICE="2"
;; ;;
ADVANCED | advanced | 3) ADVANCED | advanced | 3)
CHOICE="3" CHOICE="3"
;; ;;
DEFAULT_VARS | default_vars | 4) MYDEFAULTS | mydefaults | 4)
CHOICE="4" CHOICE="4"
;; ;;
*) APPDEFAULTS | appdefaults | 5)
echo -e "\n${CROSS}${RD}Invalid PRESET value: ${PRESET}${CL}\n" CHOICE="5"
exit 1 ;;
;; DIAGNOSTICS | diagnostics | 6)
CHOICE="6"
;;
STORAGE | storage | 7)
CHOICE="7"
;;
*)
echo -e "\n${CROSS}${RD}Invalid PRESET value: ${PRESET}${CL}\n"
exit 1
;;
esac esac
else else
#"4" "Use Config File" \ # Build dynamic menu
#"5" "Manage Default Storage" \ local menu_items=(
while true; do "1" "Default Settings"
TMP_CHOICE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" \ "2" "Default Settings (Verbose)"
--title "SETTINGS" \ "3" "Advanced Install"
--menu "Choose an option:" 20 60 6 \ "4" "My Defaults"
"1" "Default Settings" \ )
"2" "Default Settings (with verbose)" \ if [ -f "$(get_app_defaults_path)" ]; then
"3" "Advanced Settings" \ menu_items+=("5" "App Defaults for ${APP}")
"4" "My Default Vars" \ fi
"5" "Diagnostic Settings" \ menu_items+=(
"6" "Exit" \ "6" "Diagnostic Settings"
--default-item "1" 3>&1 1>&2 2>&3) || true "7" "Storage Settings"
"8" "Exit"
)
if [ -z "$TMP_CHOICE" ]; then TMP_CHOICE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" \
echo -e "\n${CROSS}${RD}Menu canceled. Exiting script.${CL}\n" --title "SETTINGS" \
exit 0 --menu "Choose an option:" 20 60 9 \
fi "${menu_items[@]}" \
--default-item "1" 3>&1 1>&2 2>&3) || true
CHOICE="$TMP_CHOICE" if [ -z "$TMP_CHOICE" ]; then
break echo -e "\n${CROSS}${RD}Menu canceled. Exiting script.${CL}\n"
done exit 0
fi
CHOICE="$TMP_CHOICE"
fi fi
case $CHOICE in case $CHOICE in
1) 1)
header_info header_info
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}" echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}"
VERBOSE="no" VERBOSE="no"
METHOD="default" METHOD="default"
base_settings "$VERBOSE" base_settings "$VERBOSE"
echo_default echo_default
;; ;;
2) 2)
header_info header_info
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${VERBOSE_CROPPED}Verbose)${CL}" echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (Verbose)${CL}"
VERBOSE="yes" VERBOSE="yes"
METHOD="default" METHOD="default"
base_settings "$VERBOSE" base_settings "$VERBOSE"
echo_default echo_default
;; ;;
3) 3)
header_info header_info
echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${CL}" echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Install on node $PVEHOST_NAME${CL}"
METHOD="advanced" METHOD="advanced"
base_settings base_settings
advanced_settings advanced_settings
maybe_offer_save_app_defaults maybe_offer_save_app_defaults
;; ;;
# 4) 4)
# header_info default_var_settings || {
# echo -e "${INFO}${HOLD} ${GN}Using Config File on node $PVEHOST_NAME${CL}" msg_error "Failed to apply default.vars"
# METHOD="advanced" exit 1
# source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/config-file.func) }
# config_file ;;
# ;; 5)
4) # App Defaults
# My Defaults (default.vars) if [ -f "$(get_app_defaults_path)" ]; then
default_var_settings || { header_info
msg_error "Failed to apply default.vars" echo -e "${DEFAULT}${BOLD}${BL}Using App Defaults for ${APP} on node $PVEHOST_NAME${CL}"
exit 1 METHOD="appdefaults"
} base_settings
;; _load_vars_file "$(get_app_defaults_path)"
5) echo_default
if [[ $DIAGNOSTICS == "yes" ]]; then else
if whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DIAGNOSTICS SETTINGS" --yesno "Send Diagnostics of LXC Installation?\n\nCurrent setting: ${DIAGNOSTICS}" 10 58 \ msg_error "No App Defaults available for ${APP}"
--yes-button "No" --no-button "Back"; then exit 1
DIAGNOSTICS="no"
sed -i 's/^DIAGNOSTICS=.*/DIAGNOSTICS=no/' /usr/local/community-scripts/diagnostics
whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DIAGNOSTICS SETTINGS" --msgbox "Diagnostics settings changed to ${DIAGNOSTICS}." 8 58
fi fi
else ;;
if whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DIAGNOSTICS SETTINGS" --yesno "Send Diagnostics of LXC Installation?\n\nCurrent setting: ${DIAGNOSTICS}" 10 58 \ 6)
--yes-button "Yes" --no-button "Back"; then if [[ $DIAGNOSTICS == "yes" ]]; then
DIAGNOSTICS="yes" if whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DIAGNOSTIC SETTINGS" --yesno "Send Diagnostics?\n\nCurrent: ${DIAGNOSTICS}" 10 58 \
sed -i 's/^DIAGNOSTICS=.*/DIAGNOSTICS=yes/' /usr/local/community-scripts/diagnostics --yes-button "No" --no-button "Back"; then
whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DIAGNOSTICS SETTINGS" --msgbox "Diagnostics settings changed to ${DIAGNOSTICS}." 8 58 DIAGNOSTICS="no"
sed -i 's/^DIAGNOSTICS=.*/DIAGNOSTICS=no/' /usr/local/community-scripts/diagnostics
whiptail --msgbox "Diagnostics set to ${DIAGNOSTICS}." 8 58
fi
else
if whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DIAGNOSTIC SETTINGS" --yesno "Send Diagnostics?\n\nCurrent: ${DIAGNOSTICS}" 10 58 \
--yes-button "Yes" --no-button "Back"; then
DIAGNOSTICS="yes"
sed -i 's/^DIAGNOSTICS=.*/DIAGNOSTICS=yes/' /usr/local/community-scripts/diagnostics
whiptail --msgbox "Diagnostics set to ${DIAGNOSTICS}." 8 58
fi
fi fi
fi ;;
;; 7)
6) storage_settings_menu
echo -e "\n${CROSS}${RD}Script terminated. Have a great day!${CL}\n" ;;
exit 0 8)
;; echo -e "\n${CROSS}${RD}Script terminated.${CL}\n"
*) exit 0
echo -e "${CROSS}${RD}Invalid option, please try again.${CL}" ;;
;; *)
echo -e "${CROSS}${RD}Invalid option, please try again.${CL}"
;;
esac esac
} }
check_container_resources() { check_container_resources() {
# Check actual RAM & Cores # Check actual RAM & Cores
current_ram=$(free -m | awk 'NR==2{print $2}') current_ram=$(free -m | awk 'NR==2{print $2}')