name: Asset Build Verification

on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]

permissions:
  contents: read

jobs:
  asset_verification:
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
        with:
          persist-credentials: false

      - name: build essential
        run: |
          sudo apt-get update
          sudo apt-get install -y build-essential

      - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
        with:
          node-version: '24.11.0'
      - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
        with:
            go-version: '1.25.4'

      - name: install node deps
        run: |
          npm ci

      - name: Check for uncommitted changes before asset build
        id: check-changes-before
        run: |
          if [[ -n $(git status --porcelain) ]]; then
            echo "has_changes=true" >> $GITHUB_OUTPUT
          else
            echo "has_changes=false" >> $GITHUB_OUTPUT
          fi

      - name: Fail if there are uncommitted changes before build
        if: steps.check-changes-before.outputs.has_changes == 'true'
        run: |
          echo "There are uncommitted changes before running npm run assets"
          git status
          exit 1

      - name: Run asset build
        run: |
          npm run assets

      - name: Check for uncommitted changes after asset build
        id: check-changes-after
        run: |
          if [[ -n $(git status --porcelain) ]]; then
            echo "has_changes=true" >> $GITHUB_OUTPUT
          else
            echo "has_changes=false" >> $GITHUB_OUTPUT
          fi

      - name: Fail if assets generated changes
        if: steps.check-changes-after.outputs.has_changes == 'true'
        run: |
          echo "npm run assets generated uncommitted changes. This indicates the repository has outdated generated files."
          echo "Please run 'npm run assets' locally and commit the changes."
          git status
          git diff
          exit 1
