#!/usr/bin/env bash # Prüft ob ein OrcaSlicer-KX Build-Artefakt die erwarteten Strings enthält. # Verwendung: # ./tools/verify_build.sh linux # ./tools/verify_build.sh windows # # Gibt Exit-Code 0 bei Erfolg, 1 bei Fehler zurück. set -euo pipefail PLATFORM="${1:-}" ARTIFACT="${2:-}" if [[ -z "$PLATFORM" || -z "$ARTIFACT" ]]; then echo "Verwendung: $0 " exit 1 fi if [[ ! -f "$ARTIFACT" ]]; then echo "FEHLER: Artefakt nicht gefunden: $ARTIFACT" exit 1 fi # Versionstring aus version.inc lesen SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(dirname "$SCRIPT_DIR")" VERSION=$(grep 'set(SoftFever_VERSION' "$REPO_ROOT/version.inc" | grep -oP '"\K[^"]+') if [[ -z "$VERSION" ]]; then echo "FEHLER: Konnte VERSION nicht aus version.inc lesen" exit 1 fi echo "=== OrcaSlicer-KX Build-Verifikation ===" echo "Plattform : $PLATFORM" echo "Artefakt : $ARTIFACT" echo "Erwartet : $VERSION" echo "========================================" TMPDIR=$(mktemp -d) trap "rm -rf $TMPDIR" EXIT CHECKS=( "$VERSION" "KX-Bridge" "filament_sub_brands" ) BINARY="" if [[ "$PLATFORM" == "linux" ]]; then echo "Extrahiere AppImage..." chmod +x "$ARTIFACT" cd "$TMPDIR" "$ARTIFACT" --appimage-extract bin/orca-slicer 2>/dev/null || \ "$ARTIFACT" --appimage-extract 2>/dev/null BINARY=$(find "$TMPDIR/squashfs-root" -name "orca-slicer" -type f | head -1) if [[ -z "$BINARY" ]]; then echo "FEHLER: orca-slicer Binary nicht im AppImage gefunden" exit 1 fi elif [[ "$PLATFORM" == "windows" ]]; then echo "Extrahiere Windows ZIP..." unzip -q "$ARTIFACT" "OrcaSlicer.dll" -d "$TMPDIR" 2>/dev/null || true BINARY="$TMPDIR/OrcaSlicer.dll" if [[ ! -f "$BINARY" ]]; then echo "FEHLER: OrcaSlicer.dll nicht im ZIP gefunden" exit 1 fi else echo "FEHLER: Unbekannte Plattform '$PLATFORM' (erwartet: linux oder windows)" exit 1 fi echo "Binary : $BINARY ($(du -sh "$BINARY" | cut -f1))" echo "" FAILED=0 for needle in "${CHECKS[@]}"; do if grep -qaF "$needle" "$BINARY" 2>/dev/null; then echo " [OK] $needle" else echo " [FAIL] $needle — NICHT GEFUNDEN" FAILED=1 fi done echo "" if [[ $FAILED -eq 0 ]]; then echo "=== VERIFIKATION ERFOLGREICH ===" exit 0 else echo "=== VERIFIKATION FEHLGESCHLAGEN — Upload abgebrochen ===" exit 1 fi