Files
firefrost-services/services/modpack-version-checker/blueprint-extension/build.sh
Claude (Chronicler #63) 35315c2e81 refactor(modpackchecker): Batch 1 fixes from Gemini review
Routes (client.php):
- Removed redundant prefixing - Blueprint auto-prefixes with identifier
- Clean paths: /servers/{server}/check and /status
- Added clear comments documenting resulting URLs

Migration:
- Changed enum('status') to string('status') for future flexibility
- Added foreign key constraint: server_uuid -> servers.uuid with cascade delete
- Ensures 'RV-Ready' data integrity - no ghost data on server deletion

Build Script:
- Removed redundant PHP copy logic (Blueprint handles via requests.app)
- Fixed dead code that referenced wrong path for console command
- More targeted sed patterns for better stability
- Added author/version header

Reviewed by: Gemini AI (Architecture Consultant)
Signed-off-by: Claude (Chronicler #63) <claude@firefrostgaming.com>
2026-04-06 11:27:46 +00:00

93 lines
3.8 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# MODPACK VERSION CHECKER - BUILD SCRIPT
# =============================================================================
#
# Executes automatically during `blueprint -build`
# Injects React components into Pterodactyl's frontend
#
# @author Firefrost Gaming / Frostystyle <dev@firefrostgaming.com>
# @version 1.0.0
# =============================================================================
echo "=========================================="
echo "ModpackChecker Build Script v1.0.0"
echo "=========================================="
# Determine the extension source directory
# Blueprint may run from .blueprint/dev/ or .blueprint/extensions/modpackchecker/
if [ -d ".blueprint/extensions/modpackchecker/views" ]; then
EXT_DIR=".blueprint/extensions/modpackchecker"
elif [ -d ".blueprint/dev/views" ]; then
EXT_DIR=".blueprint/dev"
else
echo "ERROR: Cannot find extension views directory"
exit 1
fi
echo "Using extension directory: $EXT_DIR"
# ===========================================
# 1. CONSOLE WIDGET INJECTION
# ===========================================
echo ""
echo "--- Console Widget ---"
if [ -f "$EXT_DIR/views/server/wrapper.tsx" ]; then
cp "$EXT_DIR/views/server/wrapper.tsx" resources/scripts/components/server/ModpackVersionCard.tsx
echo "✓ Copied ModpackVersionCard.tsx"
else
echo "⚠ wrapper.tsx not found, skipping console widget"
fi
# Inject into ServerConsoleContainer.tsx
if ! grep -q "ModpackVersionCard" resources/scripts/components/server/console/ServerConsoleContainer.tsx 2>/dev/null; then
sed -i '1i import ModpackVersionCard from "@/components/server/ModpackVersionCard";' resources/scripts/components/server/console/ServerConsoleContainer.tsx
# Place after ServerDetailsBlock for consistent positioning
sed -i '/<ServerDetailsBlock/a \ <ModpackVersionCard />' resources/scripts/components/server/console/ServerConsoleContainer.tsx
echo "✓ Injected ModpackVersionCard into ServerConsoleContainer.tsx"
else
echo "○ ModpackVersionCard already present in ServerConsoleContainer.tsx"
fi
# ===========================================
# 2. DASHBOARD BADGE INJECTION
# ===========================================
echo ""
echo "--- Dashboard Badge ---"
if [ -f "$EXT_DIR/views/dashboard/UpdateBadge.tsx" ]; then
mkdir -p resources/scripts/components/dashboard
cp "$EXT_DIR/views/dashboard/UpdateBadge.tsx" resources/scripts/components/dashboard/UpdateBadge.tsx
echo "✓ Copied UpdateBadge.tsx"
else
echo "⚠ UpdateBadge.tsx not found, skipping dashboard badge"
fi
# Inject into ServerRow.tsx (dashboard server list)
if ! grep -q "UpdateBadge" resources/scripts/components/dashboard/ServerRow.tsx 2>/dev/null; then
sed -i '1i import UpdateBadge from "@/components/dashboard/UpdateBadge";' resources/scripts/components/dashboard/ServerRow.tsx
# Targeted replacement: append badge after server name
sed -i 's|{server.name}</p>|{server.name}<UpdateBadge serverUuid={server.uuid} /></p>|' resources/scripts/components/dashboard/ServerRow.tsx
echo "✓ Injected UpdateBadge into ServerRow.tsx"
else
echo "○ UpdateBadge already present in ServerRow.tsx"
fi
# ===========================================
# NOTE: Console Command (CheckModpackUpdates.php)
# ===========================================
# The PHP console command is automatically merged by Blueprint via
# conf.yml's `requests.app: "app"` setting. No manual copy needed.
echo ""
echo "=========================================="
echo "ModpackChecker injection complete!"
echo "=========================================="
echo ""
echo "Next steps:"
echo " 1. Run: yarn build:production"
echo " 2. Restart: systemctl restart php8.3-fpm"
echo " 3. Test cron: php artisan modpackchecker:check"
echo ""