refactoring and adding automations

This commit is contained in:
Deckard
2025-10-17 01:40:50 -04:00
parent 4bf22d1829
commit 859a214e12
65 changed files with 4622 additions and 956 deletions

84
scripts/manage-modules.sh Normal file → Executable file
View File

@@ -1,10 +1,11 @@
#!/bin/bash
# ac-compose
set -e
echo 'Setting up git user'
git config --global user.name "$GIT_USERNAME"
git config --global user.email "$GIT_EMAIL"
git config --global url.https://$GIT_PAT@github.com/.insteadOf https://github.com/
git config --global user.name "${GIT_USERNAME:-ac-compose}"
git config --global user.email "${GIT_EMAIL:-noreply@azerothcore.org}"
# PAT not needed for public repositories
echo 'Initializing module management...'
cd /modules
@@ -538,18 +539,6 @@ if [ "$MODULE_LEVEL_GRANT" != "1" ]; then
rm -f /azerothcore/env/dist/etc/levelGrant.conf*
fi
if [ "$MODULE_ASSISTANT" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_assistant.conf*
fi
if [ "$MODULE_REAGENT_BANK" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_reagent_bank.conf*
fi
if [ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_black_market.conf*
fi
# Install configuration files for enabled modules
for module_dir in mod-*; do
if [ -d "$module_dir" ]; then
@@ -558,15 +547,21 @@ for module_dir in mod-*; do
fi
done
echo 'Configuration file management complete.'
# Load SQL runner if present
if [ -f "/scripts/manage-modules-sql.sh" ]; then
. /scripts/manage-modules-sql.sh
elif [ -f "/tmp/scripts/manage-modules-sql.sh" ]; then
. /tmp/scripts/manage-modules-sql.sh
else
echo "⚠️ SQL helper not found, skipping module SQL execution"
fi
# Source the SQL module management functions
source /scripts/manage-modules-sql.sh
echo 'Executing module SQL scripts...'
execute_module_sql_scripts
echo 'SQL execution complete.'
# Execute SQLs for enabled modules (via helper)
if declare -f execute_module_sql_scripts >/dev/null 2>&1; then
echo 'Executing module SQL scripts...'
execute_module_sql_scripts
echo 'SQL execution complete.'
fi
# Module state tracking and rebuild logic
echo 'Checking for module changes that require rebuild...'
@@ -576,7 +571,7 @@ CURRENT_STATE=""
REBUILD_REQUIRED=0
# Create current module state hash
for module_var in MODULE_PLAYERBOTS MODULE_AOE_LOOT MODULE_LEARN_SPELLS MODULE_FIREWORKS MODULE_INDIVIDUAL_PROGRESSION MODULE_AHBOT MODULE_AUTOBALANCE MODULE_TRANSMOG MODULE_NPC_BUFFER MODULE_DYNAMIC_XP MODULE_SOLO_LFG MODULE_1V1_ARENA MODULE_PHASED_DUELS MODULE_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD MODULE_ELUNA MODULE_TIME_IS_TIME MODULE_POCKET_PORTAL MODULE_RANDOM_ENCHANTS MODULE_SOLOCRAFT MODULE_PVP_TITLES MODULE_NPC_BEASTMASTER MODULE_NPC_ENCHANTER MODULE_INSTANCE_RESET MODULE_LEVEL_GRANT; do
for module_var in MODULE_PLAYERBOTS MODULE_AOE_LOOT MODULE_LEARN_SPELLS MODULE_FIREWORKS MODULE_INDIVIDUAL_PROGRESSION MODULE_AHBOT MODULE_AUTOBALANCE MODULE_TRANSMOG MODULE_NPC_BUFFER MODULE_DYNAMIC_XP MODULE_SOLO_LFG MODULE_1V1_ARENA MODULE_PHASED_DUELS MODULE_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD MODULE_ELUNA MODULE_TIME_IS_TIME MODULE_POCKET_PORTAL MODULE_RANDOM_ENCHANTS MODULE_SOLOCRAFT MODULE_PVP_TITLES MODULE_NPC_BEASTMASTER MODULE_NPC_ENCHANTER MODULE_INSTANCE_RESET MODULE_LEVEL_GRANT MODULE_ARAC MODULE_ASSISTANT MODULE_REAGENT_BANK MODULE_BLACK_MARKET_AUCTION_HOUSE; do
eval "value=\$$module_var"
CURRENT_STATE="$CURRENT_STATE$module_var=$value|"
done
@@ -598,9 +593,9 @@ fi
# Save current state
echo "$CURRENT_STATE" > "$MODULES_STATE_FILE"
# Check if any C++ modules are enabled (all current modules require compilation)
# Check if any C++ modules are enabled (modules requiring source compilation)
# NOTE: mod-playerbots uses pre-built images and doesn't require rebuild
ENABLED_MODULES=""
[ "$MODULE_PLAYERBOTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-playerbots"
[ "$MODULE_AOE_LOOT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-aoe-loot"
[ "$MODULE_LEARN_SPELLS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-learn-spells"
[ "$MODULE_FIREWORKS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-fireworks-on-level"
@@ -619,7 +614,6 @@ ENABLED_MODULES=""
[ "$MODULE_AUTO_REVIVE" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-auto-revive"
[ "$MODULE_GAIN_HONOR_GUARD" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-gain-honor-guard"
[ "$MODULE_ELUNA" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-eluna"
[ "$MODULE_ARAC" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-arac"
[ "$MODULE_TIME_IS_TIME" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-time-is-time"
[ "$MODULE_POCKET_PORTAL" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-pocket-portal"
[ "$MODULE_RANDOM_ENCHANTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-random-enchants"
@@ -629,9 +623,6 @@ ENABLED_MODULES=""
[ "$MODULE_NPC_ENCHANTER" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-npc-enchanter"
[ "$MODULE_INSTANCE_RESET" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-instance-reset"
[ "$MODULE_LEVEL_GRANT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-quest-count-level"
[ "$MODULE_ASSISTANT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-assistant"
[ "$MODULE_REAGENT_BANK" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-reagent-bank"
# Note: mod-black-market is Lua-based, doesn't need C++ compilation
if [ -n "$ENABLED_MODULES" ]; then
ENABLED_COUNT=$(echo $ENABLED_MODULES | wc -w)
@@ -646,14 +637,10 @@ if [ -n "$ENABLED_MODULES" ]; then
echo "Module configuration has changed. To integrate C++ modules into AzerothCore:"
echo ""
echo "1. Stop current services:"
echo " docker compose -f docker-compose-azerothcore-services.yml down"
echo " docker compose down"
echo ""
echo "2. Build with source-based compilation:"
echo " docker compose -f /tmp/acore-dev-test/docker-compose.yml build"
echo " docker compose -f /tmp/acore-dev-test/docker-compose.yml up -d"
echo ""
echo "3. Or use the automated rebuild script (if available):"
echo " ./scripts/rebuild-with-modules.sh"
echo "2. Build with source-based compilation (external process)"
echo " ./scripts/rebuild-with-modules.sh (if available)"
echo ""
echo "📋 NOTE: Source-based build will compile AzerothCore with all enabled modules"
echo "⏱️ Expected build time: 15-45 minutes depending on system performance"
@@ -665,21 +652,14 @@ fi
echo 'Module management complete.'
# Download rebuild script from GitHub for local access
echo '📥 Downloading rebuild-with-modules.sh from GitHub...'
apk add --no-cache curl
if curl -fsSL https://raw.githubusercontent.com/uprightbass360/acore-compose/main/scripts/rebuild-with-modules.sh -o /tmp/rebuild-with-modules.sh 2>/dev/null; then
echo '✅ Downloaded rebuild-with-modules.sh from GitHub'
chmod +x /tmp/rebuild-with-modules.sh
echo '📍 Script available at: /tmp/rebuild-with-modules.sh'
elif [ -f "/project/scripts/rebuild-with-modules.sh" ]; then
echo '📁 Using local rebuild-with-modules.sh for testing'
cp /project/scripts/rebuild-with-modules.sh /tmp/rebuild-with-modules.sh
chmod +x /tmp/rebuild-with-modules.sh
echo '✅ Copied to /tmp/rebuild-with-modules.sh'
REBUILD_SENTINEL="/modules/.requires_rebuild"
if [ "$REBUILD_REQUIRED" = "1" ] && [ -n "$ENABLED_MODULES" ]; then
echo "$ENABLED_MODULES" > "$REBUILD_SENTINEL"
else
echo '⚠️ Warning: rebuild-with-modules.sh not found in GitHub or locally'
rm -f "$REBUILD_SENTINEL" 2>/dev/null || true
fi
echo 'Keeping container alive...'
tail -f /dev/null
# Optional: keep container alive for inspection in CI/debug contexts
if [ "${MODULES_DEBUG_KEEPALIVE:-0}" = "1" ]; then
tail -f /dev/null
fi