Files
MUA-Mikes-Unraid-Agent/scripts/package.sh
T
Mikei386 b21b761e16 Versionierungsschema auf Datumsformat geändert (1.0.0 → 2026.08.18)
- plugin/mua.plg: version-Entity, txzURL, txzSHA256, CHANGES, FILE-Name
- plugin/plugin.json: version
- src/helpers.ts: MUA_VERSION
- mcp/server.php, mcp/helpers.php: MUA_VERSION
- package.json: version
- scripts/mua.page: Versionsanzeige
- scripts/package.sh: Default-Version
- Binary neu kompiliert, .txz neu gebaut (34MB)
- SHA256: 4189f9bd085806535306a59de5a4fe38abe3b883f87f9d900d2f977528913a1a
2026-08-18 08:12:12 +02:00

118 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# MUA - Mikes Unraid Agent
# package.sh — Baut das Slackware .txz-Paket
#
# Struktur des .txz:
# install/doinst.sh
# install/slack-desc
# usr/local/bin/mua (kompiliertes Binary)
# etc/rc.d/rc.mua (SysVinit-Service)
# usr/local/emhttp/plugins/mua/mua.page (WebGUI-Tab)
#
# Cross-Platform: .txz ist ein gzip-tar, funktioniert auf macOS + Linux.
set -euo pipefail
VERSION="${1:-2026.08.18}"
PKG_NAME="mua"
ARCH="x86_64"
BUILD_NUM="1"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
BUILD_DIR="${ROOT}/build/pkg"
DIST_DIR="${ROOT}/dist"
echo "===================================================="
echo " MUA - Paket-Builder"
echo " Version: ${VERSION}"
echo "===================================================="
# 1. Binary bauen (falls nicht vorhanden)
if [ ! -f "${DIST_DIR}/mua" ]; then
echo " Kompiliere Binary..."
cd "${ROOT}"
bun build src/index.ts --compile --target=bun-linux-x64 --outfile "${DIST_DIR}/mua"
fi
chmod +x "${DIST_DIR}/mua"
echo " Binary: $(du -h "${DIST_DIR}/mua" | cut -f1)"
# 2. Paket-Struktur aufbauen
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}/install"
mkdir -p "${BUILD_DIR}/usr/local/bin"
mkdir -p "${BUILD_DIR}/etc/rc.d"
mkdir -p "${BUILD_DIR}/usr/local/emhttp/plugins/mua"
# Binary
cp "${DIST_DIR}/mua" "${BUILD_DIR}/usr/local/bin/mua"
chmod 755 "${BUILD_DIR}/usr/local/bin/mua"
# SysVinit-Service
cp "${ROOT}/scripts/rc.mua" "${BUILD_DIR}/etc/rc.d/rc.mua"
chmod 755 "${BUILD_DIR}/etc/rc.d/rc.mua"
# WebGUI-Tab
cp "${ROOT}/scripts/mua.page" "${BUILD_DIR}/usr/local/emhttp/plugins/mua/mua.page"
chmod 644 "${BUILD_DIR}/usr/local/emhttp/plugins/mua/mua.page"
# PHP-Helper (Write-Operationen: create/modify/update/rebuild)
cp "${ROOT}/scripts/unraid-docker-mcp-helper.php" "${BUILD_DIR}/usr/local/bin/unraid-docker-mcp-helper.php"
chmod 755 "${BUILD_DIR}/usr/local/bin/unraid-docker-mcp-helper.php"
# 3. doinst.sh (läuft nach Installation)
cat > "${BUILD_DIR}/install/doinst.sh" << 'DOEOF'
#!/bin/bash
# MUA doinst.sh — läuft nach Installation des .txz-Pakets
# Verzeichnisse
mkdir -p /var/log/plugins
touch /var/log/plugins/mua.log
mkdir -p /boot/config/plugins/mua
# Service starten
/etc/rc.d/rc.mua start 2>/dev/null || true
# Health-Check
sleep 2
if curl -sf "http://127.0.0.1:3002/health" > /dev/null 2>&1; then
echo ""
echo " Health-Check: OK"
echo " Endpunkt: http://$(hostname -I | awk '{print $1}'):3002/mcp"
else
echo ""
echo " WARNUNG: Health-Check fehlgeschlagen"
echo " Logs: tail -f /var/log/plugins/mua.log"
fi
DOEOF
chmod 755 "${BUILD_DIR}/install/doinst.sh"
# 4. slack-desc (Paket-Beschreibung)
cat > "${BUILD_DIR}/install/slack-desc" << DESCEOF
|${PKG_NAME} (${PKG_NAME})
|
|${PKG_NAME} - Mikes Unraid Agent
|MCP over HTTP (Streamable HTTP) Server für Unraid.
|21 Tools: Docker (14), Netzwerk (6), System (1).
|Port: 3002, Endpunkt: /mcp
|
|Runtime: TypeScript (Bun Runtime, kompiliertes Binary)
|Service: /etc/rc.d/rc.mua (SysVinit)
|WebGUI: Settings > MUA
|
|Version: ${VERSION}
|Arch: ${ARCH}
|Build: ${BUILD_NUM}
DESCEOF
# 5. .txz erstellen (gzip-tar)
mkdir -p "${DIST_DIR}"
TXZ_NAME="${PKG_NAME}-${VERSION}-${ARCH}-${BUILD_NUM}.txz"
echo " Erstelle ${TXZ_NAME}..."
( cd "${BUILD_DIR}" && tar czf "${DIST_DIR}/${TXZ_NAME}" . )
echo ""
echo "===================================================="
echo " Paket erstellt: dist/${TXZ_NAME}"
echo " Größe: $(du -h "${DIST_DIR}/${TXZ_NAME}" | cut -f1)"
echo " SHA256: $(shasum -a 256 "${DIST_DIR}/${TXZ_NAME}" | cut -d' ' -f1)"
echo "===================================================="