name: Sonarqube on PR
on:
  pull_request:
    types: [opened, closed, synchronize]
    branches:
      - '**'  # matches every branch

jobs:
 Sonarqube:
    runs-on: ubuntu-latest
    if: ${{ github.event.action == 'opened' || (github.event.action == 'synchronize' && github.event.pull_request.merged == false) }}
    steps:
      - uses: actions/setup-node@v5
        with:
          node-version: 22.11.0
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0
      - uses: ./.github/actions/setup-ssh
        with:
          key: ${{ secrets.PLUTO_DEPLOY_SSH_KEY }}

      - uses: aws-actions/configure-aws-credentials@v5
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_ECR }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_ECR }}
          aws-region: us-east-1

      - name: Login to ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v2
      
      - name: NPM Configure
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: |
          echo '@pluto-tv:registry=https://npm.pkg.github.com/' > "$HOME/.npmrc"
          echo "//npm.pkg.github.com/:_authToken=${NPM_TOKEN}" >> "$HOME/.npmrc"
          pwd

      - name: Build and unit test
        env:
          ECR_REPOSITORY: ${{ github.repository }}
          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
          COMMIT_SHA: ${{ github.sha }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          SEALIGHTS_API_KEY: ${{ secrets.SEALIGHTS_API_KEY }}
        run: |
          env
          SERVICE_NAME=$(echo $ECR_REPOSITORY | sed -e 's/Pluto-tv\///g')
          ECR_REPOSITORY=plutotv/$SERVICE_NAME
          IMAGE_TAG=$(echo $GITHUB_REF | sed -e 's/refs\/heads\///g' | sed -e 's/refs\/tags\///g' | sed -e 's/\@pluto-tv\/service-dal\@//g' | sed -e 's/\//-/g')-${COMMIT_SHA}
          DOCKER_BUILDKIT=1 docker build -f ./Dockerfile -t $ECR_REPOSITORY --progress=plain \
            --secret id=npmrc,src=$HOME/.npmrc --build-arg Sealights_API_Key=${SEALIGHTS_API_KEY} --build-arg GITHUB_REF=${GITHUB_REF} \
            --build-arg GITHUB_REPOSITORY=${GITHUB_REPOSITORY} --build-arg GITHUB_SHA=${GITHUB_SHA} \
            --build-arg GITHUB_RUN_ID=${GITHUB_RUN_ID} .
          docker compose -f docker-compose.test.yml run $SERVICE_NAME test:sealights

          CONTAINER_ID=$(docker compose -f docker-compose.test.yml ps -qa $SERVICE_NAME)
          docker cp ${CONTAINER_ID}:/src/coverage coverage
      
      - uses: sonarsource/sonarqube-scan-action@master
        env:
          SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN_PARAMOUNT }}
          SONAR_HOST_URL: https://sonarde.vmn.io
