mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-22 13:06:24 +00:00
154 lines
9.6 KiB
Bash
154 lines
9.6 KiB
Bash
# Setup UI and prompting helpers for setup.sh
|
||
|
||
# setup.sh -> scripts/bash/lib/common.sh (shared colors/logging)
|
||
if [ -n "${SCRIPT_DIR:-}" ] && [ -f "$SCRIPT_DIR/scripts/bash/lib/common.sh" ]; then
|
||
source "$SCRIPT_DIR/scripts/bash/lib/common.sh"
|
||
fi
|
||
|
||
# Extra UI colors not in common.sh
|
||
MAGENTA='\033[0;35m'
|
||
BOLD='\033[1m'
|
||
|
||
: "${RED:=\033[0;31m}"
|
||
: "${GREEN:=\033[0;32m}"
|
||
: "${YELLOW:=\033[1;33m}"
|
||
: "${BLUE:=\033[0;34m}"
|
||
: "${CYAN:=\033[0;36m}"
|
||
: "${NC:=\033[0m}"
|
||
|
||
say(){
|
||
local t=$1
|
||
shift
|
||
case "$t" in
|
||
INFO) echo -e "${BLUE}ℹ️ $*${NC}";;
|
||
SUCCESS) echo -e "${GREEN}✅ $*${NC}";;
|
||
WARNING) echo -e "${YELLOW}⚠️ $*${NC}";;
|
||
ERROR) echo -e "${RED}❌ $*${NC}";;
|
||
HEADER) echo -e "\n${MAGENTA}=== $* ===${NC}";;
|
||
esac
|
||
}
|
||
|
||
validate_ip(){ [[ $1 =~ ^[0-9]{1,3}(\.[0-9]{1,3}){3}$ ]]; }
|
||
validate_port(){ [[ $1 =~ ^[0-9]+$ ]] && [ $1 -ge 1 ] && [ $1 -le 65535 ]; }
|
||
validate_number(){ [[ $1 =~ ^[0-9]+$ ]]; }
|
||
|
||
ask(){
|
||
local prompt="$1"; local def="$2"; local validator="$3"; local v
|
||
while true; do
|
||
if [ "$NON_INTERACTIVE" = "1" ]; then
|
||
v="$def"
|
||
else
|
||
if [ -n "$def" ]; then
|
||
read -p "$(echo -e "${YELLOW}🔧 ${prompt} [${def}]: ${NC}")" v; v=${v:-$def}
|
||
else
|
||
read -p "$(echo -e "${YELLOW}🔧 ${prompt}: ${NC}")" v
|
||
fi
|
||
fi
|
||
if [ -z "$v" ] && [ "$NON_INTERACTIVE" = "1" ]; then
|
||
say ERROR "Non-interactive mode requires a value for '${prompt}'."
|
||
exit 1
|
||
fi
|
||
if [ -z "$validator" ] || $validator "$v"; then
|
||
echo "$v"
|
||
return 0
|
||
fi
|
||
if [ "$NON_INTERACTIVE" = "1" ]; then
|
||
say ERROR "Invalid value '${v}' provided for '${prompt}' in non-interactive mode."
|
||
exit 1
|
||
fi
|
||
say ERROR "Invalid input. Please try again."
|
||
done
|
||
}
|
||
|
||
ask_yn(){
|
||
local p="$1"; local d="$2"; local v
|
||
if [ "$NON_INTERACTIVE" = "1" ]; then
|
||
if [ "$d" = "y" ]; then
|
||
echo 1
|
||
else
|
||
echo 0
|
||
fi
|
||
return 0
|
||
fi
|
||
while true; do
|
||
if [ "$d" = "y" ]; then
|
||
read -p "$(echo -e "${YELLOW}🔧 ${p} [Y/n]: ${NC}")" v; v=${v:-y}
|
||
else
|
||
read -p "$(echo -e "${YELLOW}🔧 ${p} [y/N]: ${NC}")" v; v=${v:-n}
|
||
fi
|
||
case "$v" in
|
||
[Yy]*) echo 1; return 0;;
|
||
[Nn]*) echo 0; return 0;;
|
||
esac
|
||
say ERROR "Please answer y or n"
|
||
done
|
||
}
|
||
|
||
show_wow_header() {
|
||
if [ -t 1 ] && command -v clear >/dev/null 2>&1; then
|
||
clear >/dev/null 2>&1 || true
|
||
fi
|
||
echo -e "${RED}"
|
||
cat <<'ASCII'
|
||
|
||
##
|
||
### :*
|
||
##### .**#
|
||
###### ***##
|
||
****###* *****##.
|
||
******##- ******###.
|
||
.*********###= ********###
|
||
************##### #****###:+* ********####
|
||
***********+****##########**********##**# ********#####
|
||
********=+***********######**********######*#**+*******###+
|
||
-+*****=**************#######*******####**#####**##*****####-
|
||
++**++****************#########**####***####***#####****####:
|
||
:++*******************#*******####*****#****######***##*****#######
|
||
*= -++++++******************************###**********###******######
|
||
.+***. :++++++++***************************#+*#*-*******************#**+
|
||
++*****= =+++=+++***************************+**###**************++*#####*
|
||
-++*****+++- -=++++++++*********+++++**###**+++=+*###**+*********##+++*+++##
|
||
+++*********+++=-=+++++++++****+++***+++++*####***+++**=**#*==***#####*++***+*+
|
||
+++++***********++=-=++++++++*++****=++*++*#######**+=-=+****+*#########***==+*#*
|
||
=+++++++*****++++===-++++++++=+++++=++*+=-+#**#**=####****#**+-+**************##*
|
||
++++++++++++++======++++++++=====+++++=-+++*+##########*****==*######*****####
|
||
+++++++=++++++====++++++++++========---++++*****#######**==***#*******####*
|
||
++===++++++++=====+++++++=+++:::--:::.++++++*****####**+=**************#
|
||
=+++++=: =+=====-+++++++++++++++++++++==+++--==----:-++++++****####****+=+*+*******:
|
||
++++++++++++++++==+++++++++++++++++++++=+=-===-----:+++++++++**+++****####***+++
|
||
=++++++++++++++++++++++++++++++++++++=++++======----==+++++++=+************:
|
||
:++++++++++++++=+++++++++++++++++++======-------:-====+****************.
|
||
=----=+++-==++++++*******++++++++++++++===============****************=
|
||
-=---==-=====--+++++++++++++++++++++++++++===+++++++********++#***#++******
|
||
+++++========+=====----++++++++++++++++===+++++===--=**********+=++*++********
|
||
+++==========-=============-----:-=++=====+++++++++++++++=-=***********+*********
|
||
==----=+===+=================+++++++++++++++++++++++++=-********************
|
||
.======++++++===============---:::::==++++++++++++++++++++++=**********++*******:
|
||
+++==--::-=+++++++++++++========+===--=+- :::=-=++++++++++++++++++++++ +*****++**+***
|
||
.-----::::-=++++++++++++++++++==::-----++. :=+++++++++++++++++++*..-+*********=
|
||
:=+++++++++++++++++==.:--===-+++++++++++**++++++:::-********
|
||
++++++++++++++++++=+++++++++++++**+++++*****==******
|
||
.++++++++++++=-:.-+++++++++***++++************+
|
||
+++=========:.=+=-::++*****+*************
|
||
-++++++++==+: ..::=-. ..::::=********
|
||
.+========+==+++==========---::-+*-
|
||
++++++++++++=======-======
|
||
++++++++++++++======++
|
||
-=======++++++:
|
||
...
|
||
:::. :::::::::.,:::::: :::::::.. ... :::::::::::: :: .: .,-::::: ... :::::::.. .,::::::
|
||
;;`;; '`````;;;;;;;'''' ;;;;``;;;; .;;;;;;;.;;;;;;;;'''',;; ;;, ,;;;'````' .;;;;;;;. ;;;;``;;;; ;;;;''''
|
||
,[[ '[[, .n[[' [[cccc [[[,/[[[' ,[[ \[[, [[ ,[[[,,,[[[ [[[ ,[[ \[[,[[[,/[[[' [[cccc
|
||
c$$$cc$$$c ,$$P" $$"""" $$$$$$c $$$, $$$ $$ "$$$"""$$$ $$$ $$$, $$$$$$$$$c $$""""
|
||
888 888,,888bo,_ 888oo,__ 888b "88bo,"888,_ _,88P 88, 888 "88o`88bo,__,o,"888,_ _,88P888b "88bo,888oo,__
|
||
YMM ""` `""*UMM """"YUMMMMMMM "W" "YMMMMMP" MMM MMM YMM "YUMMMMMP" "YMMMMMP" MMMM "W" """"\MMM
|
||
ASCII
|
||
echo -e "${NC}"
|
||
}
|
||
|
||
show_realm_configured(){
|
||
echo -e "\n${GREEN}⚔️ Your realm configuration has been forged! ⚔️${NC}"
|
||
echo -e "${GREEN}🏰 Ready to deploy your World of Warcraft server${NC}"
|
||
echo -e "${GREEN}🗡️ May your realm bring epic adventures!${NC}\n"
|
||
}
|