#!/bin/bash # update_migration_status.sh - Automatische Migration Status Updates # Wird alle 4 Stunden oder bei Meilensteinen ausgeführt set -e WORKSPACE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MIGRATION_REPO="$WORKSPACE_ROOT/qt-migration-legatus" STATUS_FILE="$WORKSPACE_ROOT/MIGRATION_STATUS.md" echo "🔄 Migration Status Update - $(date -Iseconds)" # Check if we're in a git repo if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then echo "❌ Not in a git repository" exit 1 fi # Generate migration status echo "📊 Generiere Migrationsstatus..." # Count migrated files MIGRATED_FILES=$(find "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus" -name "*.cpp" -o -name "*.h" 2>/dev/null | wc -l) LEGACY_FILES=$(find "$MIGRATION_REPO/qt5-before/qt5-legatus-legacy" -name "*.cpp" -o -name "*.h" 2>/dev/null | wc -l) # Get current branch and commit cd "$MIGRATION_REPO" CURRENT_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") CURRENT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown") LAST_COMMIT_DATE=$(git log -1 --format=%ci 2>/dev/null || echo "unknown") # Count test files TEST_FILES=$(find "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus" -name "*[Tt]est*.cpp" 2>/dev/null | wc -l) # Build info BUILD_STATUS="Unknown" if [ -d "$WORKSPACE_ROOT/build-qt6-migration" ]; then if [ -f "$WORKSPACE_ROOT/build-qt6-migration/CMakeCache.txt" ]; then BUILD_STATUS="✅ Configure erfolgreich" fi fi # Generate status report cat > "$STATUS_FILE" << EOF # 🚀 Qt5/C++11 → Qt6/C++23 Migration Status **Letztes Update**: $(date -Iseconds) **Branch**: \`$CURRENT_BRANCH\` **Commit**: \`$CURRENT_COMMIT\` **Letzter Commit**: $LAST_COMMIT_DATE --- ## 📊 Fortschritt | Metrik | Wert | |--------|------| | Migrierte Dateien | $MIGRATED_FILES | | Legacy Dateien (Referenz) | $LEGACY_FILES | | Test-Dateien | $TEST_FILES | | Build-Status | $BUILD_STATUS | --- ## ✅ Abgeschlossene Meilensteine $(if [ -f "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus/Lts/Common/CMakeLists.txt" ]; then echo "- ✅ Lts/Common - Vollständig migriert"; fi) $(if [ -f "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus/Lts/DDS/CMakeLists.txt" ]; then echo "- 🟡 Lts/DDS - In Arbeit"; fi) $(if [ -f "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus/Lts/Plugins/CMakeLists.txt" ]; then echo "- 🟡 Lts/Plugins - In Arbeit"; fi) $(if [ -f "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus/Lts/Proxies/CMakeLists.txt" ]; then echo "- 🟡 Lts/Proxies - In Arbeit"; fi) $(if [ -f "$MIGRATION_REPO/qt6-after/qt6-migrated-legatus/Lts/Services/CMakeLists.txt" ]; then echo "- 🟡 Lts/Services - In Arbeit"; fi) --- ## 🔧 Technische Details ### BUILD_RTI Configuration - Conditional Compilation: ✅ Implementiert - BUILD_RTI=OFF Build: ✅ Validiert ### Qt Version - Ziel: Qt 6.10.2 - Docker Image: migration-pipeline:ubuntu26.04 ### Submodule Status \`\`\` $(cd "$WORKSPACE_ROOT" && git submodule status 2>/dev/null || echo "N/A") \`\`\` --- ## 📝 Letzte Änderungen \`\`\` $(cd "$MIGRATION_REPO" && git log -5 --oneline 2>/dev/null || echo "N/A") \`\`\` --- ## ⏭️ Nächste Schritte 1. Lts/DDS Module vollständig migrieren 2. Lts/Plugins Kernmodule migrieren 3. Vollständigen Build validieren 4. CTest Suite ausführen --- *Automatisch generiert von update_migration_status.sh* EOF echo "✅ Status file updated: $STATUS_FILE" # Commit and push if there are changes cd "$WORKSPACE_ROOT" if ! git diff --quiet "$STATUS_FILE" 2>/dev/null; then echo "📝 Committing changes..." git add "$STATUS_FILE" git commit -S -m "chore: Migration Status Update $(date -Iseconds) Automatische Status-Aktualisierung - Migrierte Dateien: $MIGRATED_FILES - Build Status: $BUILD_STATUS Signed-off-by: Torsten Wierschin " echo "🔄 Pushing to remote..." git push origin main echo "✅ Status committed and pushed!" else echo "ℹ️ No changes to commit" fi echo "✅ Done!"