mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-22 04:56:23 +00:00
feat: cleanup setup into sub-modules
This commit is contained in:
153
scripts/bash/setup/ui.sh
Normal file
153
scripts/bash/setup/ui.sh
Normal file
@@ -0,0 +1,153 @@
|
||||
# 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"
|
||||
}
|
||||
Reference in New Issue
Block a user