name: Labels

on:
  pull_request:
    types: [ opened, synchronize, reopened ]

jobs:
  versions-labels:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v5
        with:
          token: ${{ secrets.GH_PKG_REPO_TOKEN }}

      - name: Extract appVersion and Helm version
        run: |
          CHART_FILE=$(find deploy/helm -type f -path "*/service-dal/Chart.yaml" -print -quit)
          if [ -z "$CHART_FILE" ]; then
              CHART_FILE=$(find deploy/helm -type f -path "service-dal/Chart.yaml" -print -quit)
          fi
          echo "$CHART_FILE"
          echo "APP_VERSION=$(yq e '.appVersion' $CHART_FILE)" >> $GITHUB_ENV
          echo "HELM_VERSION=$(yq e '.version' $CHART_FILE)" >> $GITHUB_ENV

      - name: Extract lib-observability-js version from package.json
        run: |
          echo "OBSERVABILITY_VERSION=$(jq -r '.dependencies["@pluto-tv/lib-observability-js"]' package.json)" >> $GITHUB_ENV
        

      - name: Generate labels
        run: |
          cat << EOF > .github/labeler.yml
          "release: ${{ env.APP_VERSION }}":
            - changed-files:
              - any-glob-to-any-file: '**'
          "chart: ${{ env.HELM_VERSION }}":
            - base-branch: 'main'
          "observability: ${{ env.OBSERVABILITY_VERSION }}":
            - changed-files:
              - any-glob-to-any-file: '**'
          EOF

      - name: Run Labeler
        uses: actions/labeler@v6

      - name: Set Label Colors
        run: |
          get_label_color() {
            local label="$1"
            if [[ "$label" == release:* ]]; then
              echo "FBCA04" # Yellow for release-related labels
            elif [[ "$label" == chart:* ]]; then
              echo "1D76DB" # Blue for chart-related labels
            elif [[ "$label" == observability:* ]]; then
              echo "0E8A16" # Green for observability-related labels
            fi
          }

          labels=$(gh label list --json name --jq '.[].name')
          
          while IFS= read -r label; do
            color=$(get_label_color "$label")
            gh label edit "$label" --color "$color" || \
            echo "Failed to update color for label: $label"
          done <<< "$labels"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}