setup fixes and filters

This commit is contained in:
uprightbass360
2025-11-06 22:29:30 -05:00
parent 42ed8c8de5
commit 0aa1a5e762
3 changed files with 54 additions and 8 deletions

View File

@@ -12,7 +12,9 @@
"config_cleanup": [ "config_cleanup": [
"playerbots.conf*" "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", "key": "MODULE_AOE_LOOT",
@@ -248,7 +250,9 @@
"mod_eluna.conf*" "mod_eluna.conf*"
], ],
"description": "Adds Eluna Lua scripting engine for creating custom gameplay mechanics", "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", "key": "MODULE_TIME_IS_TIME",
@@ -547,7 +551,9 @@
"notes": "Azeroth Interface Override - enables client-server interface communication", "notes": "Azeroth Interface Override - enables client-server interface communication",
"post_install_hooks": [], "post_install_hooks": [],
"description": "Pure Lua server-client communication system for bidirectional data transmission", "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", "key": "MODULE_ELUNA_SCRIPTS",

View File

@@ -67,6 +67,8 @@ def cmd_metadata(manifest_path: str) -> None:
notes = clean(entry.get("notes", "")) notes = clean(entry.get("notes", ""))
description = clean(entry.get("description", "")) description = clean(entry.get("description", ""))
category = clean(entry.get("category", "")) category = clean(entry.get("category", ""))
special_message = clean(entry.get("special_message", ""))
repo = clean(entry.get("repo", ""))
print( print(
"\t".join( "\t".join(
[ [
@@ -80,6 +82,8 @@ def cmd_metadata(manifest_path: str) -> None:
notes, notes,
description, description,
category, category,
special_message,
repo,
] ]
) )
) )
@@ -90,7 +94,11 @@ def cmd_sorted_keys(manifest_path: str) -> None:
modules = list(iter_modules(manifest)) modules = list(iter_modules(manifest))
modules.sort( modules.sort(
key=lambda item: ( 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", "")), str(item.get("type", "")),
# Tertiary sort by name (case insensitive)
str(item.get("name", item.get("key", ""))).lower(), str(item.get("name", item.get("key", ""))).lower(),
) )
) )

View File

@@ -200,7 +200,7 @@ unset __hc_key __hc_value
# Route detection IP (not in template) # Route detection IP (not in template)
readonly ROUTE_DETECTION_IP="1.1.1.1" 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 say(){ local t=$1; shift; case "$t" in
INFO) echo -e "${BLUE} $*${NC}";; INFO) echo -e "${BLUE} $*${NC}";;
SUCCESS) echo -e "${GREEN}$*${NC}";; SUCCESS) echo -e "${GREEN}$*${NC}";;
@@ -364,6 +364,8 @@ declare -A MODULE_REQUIRES_MAP=()
declare -A MODULE_NOTES_MAP=() declare -A MODULE_NOTES_MAP=()
declare -A MODULE_DESCRIPTION_MAP=() declare -A MODULE_DESCRIPTION_MAP=()
declare -A MODULE_CATEGORY_MAP=() declare -A MODULE_CATEGORY_MAP=()
declare -A MODULE_SPECIAL_MESSAGE_MAP=()
declare -A MODULE_REPO_MAP=()
declare -A MODULE_DEFAULT_VALUES=() declare -A MODULE_DEFAULT_VALUES=()
declare -A KNOWN_MODULE_LOOKUP=() declare -A KNOWN_MODULE_LOOKUP=()
declare -A ENV_TEMPLATE_VALUES=() declare -A ENV_TEMPLATE_VALUES=()
@@ -414,7 +416,7 @@ load_module_manifest_metadata() {
exit 1 exit 1
fi 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 [ -n "$key" ] || continue
# Convert placeholder back to empty string # Convert placeholder back to empty string
[ "$block_reason" = "-" ] && block_reason="" [ "$block_reason" = "-" ] && block_reason=""
@@ -422,6 +424,8 @@ load_module_manifest_metadata() {
[ "$notes" = "-" ] && notes="" [ "$notes" = "-" ] && notes=""
[ "$description" = "-" ] && description="" [ "$description" = "-" ] && description=""
[ "$category" = "-" ] && category="" [ "$category" = "-" ] && category=""
[ "$special_message" = "-" ] && special_message=""
[ "$repo" = "-" ] && repo=""
MODULE_NAME_MAP["$key"]="$name" MODULE_NAME_MAP["$key"]="$name"
MODULE_NEEDS_BUILD_MAP["$key"]="$needs_build" MODULE_NEEDS_BUILD_MAP["$key"]="$needs_build"
MODULE_TYPE_MAP["$key"]="$module_type" MODULE_TYPE_MAP["$key"]="$module_type"
@@ -431,6 +435,8 @@ load_module_manifest_metadata() {
MODULE_NOTES_MAP["$key"]="$notes" MODULE_NOTES_MAP["$key"]="$notes"
MODULE_DESCRIPTION_MAP["$key"]="$description" MODULE_DESCRIPTION_MAP["$key"]="$description"
MODULE_CATEGORY_MAP["$key"]="$category" MODULE_CATEGORY_MAP["$key"]="$category"
MODULE_SPECIAL_MESSAGE_MAP["$key"]="$special_message"
MODULE_REPO_MAP["$key"]="$repo"
KNOWN_MODULE_LOOKUP["$key"]=1 KNOWN_MODULE_LOOKUP["$key"]=1
done < <(python3 "$MODULE_MANIFEST_HELPER" metadata "$MODULE_MANIFEST_PATH") done < <(python3 "$MODULE_MANIFEST_HELPER" metadata "$MODULE_MANIFEST_PATH")
@@ -1064,6 +1070,7 @@ fi
fi fi
fi fi
local AC_AUTHSERVER_IMAGE_PLAYERBOTS_VALUE="$DEFAULT_AUTH_IMAGE_PLAYERBOTS" local AC_AUTHSERVER_IMAGE_PLAYERBOTS_VALUE="$DEFAULT_AUTH_IMAGE_PLAYERBOTS"
local AC_WORLDSERVER_IMAGE_PLAYERBOTS_VALUE="$DEFAULT_WORLD_IMAGE_PLAYERBOTS" local AC_WORLDSERVER_IMAGE_PLAYERBOTS_VALUE="$DEFAULT_WORLD_IMAGE_PLAYERBOTS"
local AC_AUTHSERVER_IMAGE_MODULES_VALUE="$DEFAULT_AUTH_IMAGE_MODULES" local AC_AUTHSERVER_IMAGE_MODULES_VALUE="$DEFAULT_AUTH_IMAGE_MODULES"
@@ -1148,7 +1155,7 @@ fi
["developer"]="🛠️ Developer Tools" ["developer"]="🛠️ Developer Tools"
) )
# Group modules by category # Group modules by category using arrays
declare -A modules_by_category declare -A modules_by_category
local key local key
for key in "${selection_keys[@]}"; do for key in "${selection_keys[@]}"; do
@@ -1167,12 +1174,29 @@ fi
local module_list="${modules_by_category[$cat]:-}" local module_list="${modules_by_category[$cat]:-}"
[ -n "$module_list" ] || continue [ -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}" local cat_title="${category_titles[$cat]:-$cat}"
printf '\n%b\n' "${BOLD}${CYAN}═══ ${cat_title} ═══${NC}" printf '\n%b\n' "${BOLD}${CYAN}═══ ${cat_title} ═══${NC}"
# Process modules in this category # Process modules in this category
for key in $module_list; do for key in "${module_array[@]}"; do
[ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue [ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue
local status_lc="${MODULE_STATUS_MAP[$key],,}" local status_lc="${MODULE_STATUS_MAP[$key],,}"
if [ -n "$status_lc" ] && [ "$status_lc" != "active" ]; then if [ -n "$status_lc" ] && [ "$status_lc" != "active" ]; then
@@ -1190,6 +1214,14 @@ fi
if [ -n "$description" ]; then if [ -n "$description" ]; then
printf '%b\n' "${BLUE} ${MODULE_NAME_MAP[$key]:-$key}: ${description}${NC}" printf '%b\n' "${BLUE} ${MODULE_NAME_MAP[$key]:-$key}: ${description}${NC}"
fi 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 local default_answer
default_answer="$(module_default "$key")" default_answer="$(module_default "$key")"
local response local response