Files
condor 679e0b4184 init
2026-07-24 18:54:53 +08:00

42 lines
2.0 KiB
Bash

#!/bin/bash
# core/validator.sh - unified option validation.
#
# The primary validation still happens inline inside parse_arguments and
# show_menu (migrated verbatim, to preserve the exact error messages and the
# "already installed" guards). validate_options() is a final, idempotent
# safety net: it re-checks only options that are still set, using the same
# regexes and messages, so it can never change a valid install path.
# Validate a single value against an ERE.
# $1 = value, $2 = regex, $3 = error message
is_valid() {
local val="$1" regex="$2" msg="$3"
if [[ "${val}" =~ ${regex} ]]; then
return 0
fi
echo "${CWARNING}${msg}${CEND}"
return 1
}
# Re-validate options that are still set after parse/menu. Empty options
# (e.g. unset because already installed) are skipped.
validate_options() {
_check_opt() {
# $1 = value, $2 = regex, $3 = message
[ -z "$1" ] && return 0
is_valid "$1" "$2" "$3" || error_exit "$3"
}
_check_opt "${nginx_option}" '^[1-2]$' "nginx_option input error! Please only input number 1~2"
_check_opt "${php_option}" '^[1-3]$' "php_option input error! Please only input number 1~3"
_check_opt "${mphp_ver}" '^(74|80|81)$' "mphp_ver input error! Please only input number 74/80/81"
# On Ubuntu 24+ only PHP 8.x is supported; PHP 7.4 (and the mphp 7.4 build)
# fails to compile against the newer system libicu.
if [[ "${Family}" == "ubuntu" ]] && [ "${Ubuntu_ver:-0}" -ge 24 ]; then
[ "${php_option}" == '1' ] && error_exit "PHP 7.4 is not supported on Ubuntu ${Ubuntu_ver}+, please choose PHP 8.x (option 2 or 3)"
[ "${mphp_ver}" == '74' ] && error_exit "mphp 7.4 is not supported on Ubuntu ${Ubuntu_ver}+, please choose 80 or 81"
fi
_check_opt "${db_option}" '^[1-9]$' "db_option input error! Please only input number 1~9"
_check_opt "${dbinstallmethod}" '^[1-2]$' "dbinstallmethod input error! Please only input number 1~2"
}