name: 'OpenVidu Meet Cleanup'
description: 'Clean up OpenVidu Meet test environment'
runs:
  using: 'composite'
  steps:
    - name: Show pre-cleanup status
      continue-on-error: true
      run: |
        echo "=== System status before cleanup ==="
        df -h
        free -h
        echo "=== Running processes ==="
        ps aux | grep -i 'npm\|node\|livekit' | grep -v grep || true
        echo "=== Docker containers ==="
        docker ps -a || true
      shell: bash

    - name: Kill backend process
      run: pkill -f "npm run start:prod" || true
      shell: bash

    - name: Stop OpenVidu Local Deployment containers
      continue-on-error: true
      run: |
        if [ -d "openvidu-local-deployment/community" ]; then
          cd openvidu-local-deployment/community
          docker compose down -v || echo "Warning: Failed to stop containers cleanly"
        else
          echo "Directory openvidu-local-deployment/community not found, skipping"
        fi
      shell: bash

    - name: Clean up temporary files
      continue-on-error: true
      run: |
        echo "Cleaning temporary files..."
        rm -rf /tmp/openvidu-* || echo "Warning: Failed to clean some OpenVidu temp files"
        rm -rf /tmp/livekit-* || echo "Warning: Failed to clean some LiveKit temp files"
      shell: bash

    - name: Check for running containers
      continue-on-error: true
      run: |
        CONTAINERS=$(docker ps -q)
        if [ -n "$CONTAINERS" ]; then
          echo "Warning: Found running containers. Stopping them before prune."
          docker stop $CONTAINERS || true
        fi
      shell: bash

    - name: Clean up Docker resources
      continue-on-error: true
      run: |
        echo "Pruning Docker system..."
        docker system prune -f --volumes || echo "Warning: Docker system prune failed"
      shell: bash

    - name: Kill orphaned processes
      continue-on-error: true
      run: |
        echo "Checking for orphaned processes..."
        ORPHANED=$(ps aux | grep -i 'npm\|node\|livekit' | grep -v grep | awk '{print $2}')
        if [ -n "$ORPHANED" ]; then
          echo "Killing processes: $ORPHANED"
          kill -9 $ORPHANED || echo "Warning: Some processes couldn't be killed"
        else
          echo "No orphaned processes found"
        fi
      shell: bash

    - name: Clean specific directories
      continue-on-error: true
      run: |
        echo "Cleaning specific directories..."
        # Don't try to remove the entire working directory
        # Instead, clean specific subdirectories that might cause permission issues

        if [ -d "openvidu-local-deployment" ]; then
          sudo rm -rf openvidu-local-deployment || echo "Warning: Failed to remove openvidu-local-deployment"
        fi

        # Clean build and cache directories
        find . -type d -name "node_modules" -exec rm -rf {} +
        find . -type d -name "dist" -exec rm -rf {} +
        find . -type d -name ".cache" -exec rm -rf {} +
      shell: bash

    - name: Show system status
      continue-on-error: true
      run: |
        echo "=== System status after cleanup ==="
        df -h
        free -h
        docker ps -a
        echo "=== Cleanup completed ==="
      shell: bash
