From 0aa1a5e762abf5cbe201ef8bdba0e853073657ce Mon Sep 17 00:00:00 2001 From: uprightbass360 Date: Thu, 6 Nov 2025 22:29:30 -0500 Subject: [PATCH] setup fixes and filters --- config/modules.json | 12 ++++++++--- scripts/setup_manifest.py | 8 ++++++++ setup.sh | 42 ++++++++++++++++++++++++++++++++++----- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/config/modules.json b/config/modules.json index 122b229..2598b1a 100644 --- a/config/modules.json +++ b/config/modules.json @@ -12,7 +12,9 @@ "config_cleanup": [ "playerbots.conf*" ], - "category": "automation" + "category": "automation", + "order": 1, + "special_message": "🤖 Foundation module: Enables AI-powered companions for solo and group content" }, { "key": "MODULE_AOE_LOOT", @@ -248,7 +250,9 @@ "mod_eluna.conf*" ], "description": "Adds Eluna Lua scripting engine for creating custom gameplay mechanics", - "category": "scripting" + "category": "scripting", + "order": 9998, + "special_message": "⚡ Advanced scripting: Required by many Lua-based modules. Enable this first if you plan to use scripted features" }, { "key": "MODULE_TIME_IS_TIME", @@ -547,7 +551,9 @@ "notes": "Azeroth Interface Override - enables client-server interface communication", "post_install_hooks": [], "description": "Pure Lua server-client communication system for bidirectional data transmission", - "category": "scripting" + "category": "scripting", + "order": 9999, + "special_message": "🌉 UI Bridge: Enables advanced client-server interfaces. Most users don't need this unless using AIO-based modules" }, { "key": "MODULE_ELUNA_SCRIPTS", diff --git a/scripts/setup_manifest.py b/scripts/setup_manifest.py index 1e88da6..6dfb14e 100755 --- a/scripts/setup_manifest.py +++ b/scripts/setup_manifest.py @@ -67,6 +67,8 @@ def cmd_metadata(manifest_path: str) -> None: notes = clean(entry.get("notes", "")) description = clean(entry.get("description", "")) category = clean(entry.get("category", "")) + special_message = clean(entry.get("special_message", "")) + repo = clean(entry.get("repo", "")) print( "\t".join( [ @@ -80,6 +82,8 @@ def cmd_metadata(manifest_path: str) -> None: notes, description, category, + special_message, + repo, ] ) ) @@ -90,7 +94,11 @@ def cmd_sorted_keys(manifest_path: str) -> None: modules = list(iter_modules(manifest)) modules.sort( key=lambda item: ( + # Primary sort by order (default to 5000 if not specified) + item.get("order", 5000), + # Secondary sort by type str(item.get("type", "")), + # Tertiary sort by name (case insensitive) str(item.get("name", item.get("key", ""))).lower(), ) ) diff --git a/setup.sh b/setup.sh index 2f373fa..0ac30f4 100755 --- a/setup.sh +++ b/setup.sh @@ -200,7 +200,7 @@ unset __hc_key __hc_value # Route detection IP (not in template) readonly ROUTE_DETECTION_IP="1.1.1.1" -RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; MAGENTA='\033[0;35m'; NC='\033[0m' +RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; MAGENTA='\033[0;35m'; CYAN='\033[0;36m'; BOLD='\033[1m'; NC='\033[0m' say(){ local t=$1; shift; case "$t" in INFO) echo -e "${BLUE}â„šī¸ $*${NC}";; SUCCESS) echo -e "${GREEN}✅ $*${NC}";; @@ -364,6 +364,8 @@ declare -A MODULE_REQUIRES_MAP=() declare -A MODULE_NOTES_MAP=() declare -A MODULE_DESCRIPTION_MAP=() declare -A MODULE_CATEGORY_MAP=() +declare -A MODULE_SPECIAL_MESSAGE_MAP=() +declare -A MODULE_REPO_MAP=() declare -A MODULE_DEFAULT_VALUES=() declare -A KNOWN_MODULE_LOOKUP=() declare -A ENV_TEMPLATE_VALUES=() @@ -414,7 +416,7 @@ load_module_manifest_metadata() { exit 1 fi - while IFS=$'\t' read -r key name needs_build module_type status block_reason requires notes description category; do + while IFS=$'\t' read -r key name needs_build module_type status block_reason requires notes description category special_message repo; do [ -n "$key" ] || continue # Convert placeholder back to empty string [ "$block_reason" = "-" ] && block_reason="" @@ -422,6 +424,8 @@ load_module_manifest_metadata() { [ "$notes" = "-" ] && notes="" [ "$description" = "-" ] && description="" [ "$category" = "-" ] && category="" + [ "$special_message" = "-" ] && special_message="" + [ "$repo" = "-" ] && repo="" MODULE_NAME_MAP["$key"]="$name" MODULE_NEEDS_BUILD_MAP["$key"]="$needs_build" MODULE_TYPE_MAP["$key"]="$module_type" @@ -431,6 +435,8 @@ load_module_manifest_metadata() { MODULE_NOTES_MAP["$key"]="$notes" MODULE_DESCRIPTION_MAP["$key"]="$description" MODULE_CATEGORY_MAP["$key"]="$category" + MODULE_SPECIAL_MESSAGE_MAP["$key"]="$special_message" + MODULE_REPO_MAP["$key"]="$repo" KNOWN_MODULE_LOOKUP["$key"]=1 done < <(python3 "$MODULE_MANIFEST_HELPER" metadata "$MODULE_MANIFEST_PATH") @@ -1064,6 +1070,7 @@ fi fi fi + local AC_AUTHSERVER_IMAGE_PLAYERBOTS_VALUE="$DEFAULT_AUTH_IMAGE_PLAYERBOTS" local AC_WORLDSERVER_IMAGE_PLAYERBOTS_VALUE="$DEFAULT_WORLD_IMAGE_PLAYERBOTS" local AC_AUTHSERVER_IMAGE_MODULES_VALUE="$DEFAULT_AUTH_IMAGE_MODULES" @@ -1148,7 +1155,7 @@ fi ["developer"]="đŸ› ī¸ Developer Tools" ) - # Group modules by category + # Group modules by category using arrays declare -A modules_by_category local key for key in "${selection_keys[@]}"; do @@ -1167,12 +1174,29 @@ fi local module_list="${modules_by_category[$cat]:-}" [ -n "$module_list" ] || continue - # Display category header + # Check if this category has any valid modules before showing header + local has_valid_modules=0 + # Split the space-separated string properly + local -a module_array + IFS=' ' read -ra module_array <<< "$module_list" + for key in "${module_array[@]}"; do + [ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue + local status_lc="${MODULE_STATUS_MAP[$key],,}" + if [ -z "$status_lc" ] || [ "$status_lc" = "active" ]; then + has_valid_modules=1 + break + fi + done + + # Skip category if no valid modules + [ "$has_valid_modules" = "1" ] || continue + + # Display category header only when we have valid modules local cat_title="${category_titles[$cat]:-$cat}" printf '\n%b\n' "${BOLD}${CYAN}═══ ${cat_title} ═══${NC}" # Process modules in this category - for key in $module_list; do + for key in "${module_array[@]}"; do [ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue local status_lc="${MODULE_STATUS_MAP[$key],,}" if [ -n "$status_lc" ] && [ "$status_lc" != "active" ]; then @@ -1190,6 +1214,14 @@ fi if [ -n "$description" ]; then printf '%b\n' "${BLUE}â„šī¸ ${MODULE_NAME_MAP[$key]:-$key}: ${description}${NC}" fi + local special_message="${MODULE_SPECIAL_MESSAGE_MAP[$key]:-}" + if [ -n "$special_message" ]; then + printf '%b\n' "${MAGENTA}💡 ${special_message}${NC}" + fi + local repo="${MODULE_REPO_MAP[$key]:-}" + if [ -n "$repo" ]; then + printf '%b\n' "${GREEN}🔗 ${repo}${NC}" + fi local default_answer default_answer="$(module_default "$key")" local response