name: Build/Test

on:
  push:
    branches:
      - develop

  pull_request:
    branches:
      - develop

jobs:
  validate-protobuf:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          path: ./
      -
        name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: 'stable'

      -
        name: Install protoc
        uses: arduino/setup-protoc@v3
        with:
          version: '25.3'
      -
        name: Install just
        uses: extractions/setup-just@v2

      - name: install protobuf-go
        run: |
          go install github.com/golang/protobuf/protoc-gen-go@latest
          go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
          which protoc-gen-go-grpc
      -
        name: Validate
        run: |
          just validate-protobuf
  backend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          path: ./

      -
        name: Install just
        uses: extractions/setup-just@v2

      -
        name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: 'stable'

      # Saves us from having to redownload all modules
      - name: Go Mod cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.cache/go-build
            ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}

      -
        name: Test
        run: |
          just test

      -
        name: Build
        run: |
          just build-local
      - name: get-pr-info
        shell: bash
        env:
          PR_NUM: ${{ github.event.number }}
        run: |
          echo $PR_NUM > pr_num.txt
          echo $GITHUB_BASE_REF > base.txt
          echo $GITHUB_HEAD_REF > head.txt

      - name: Upload code coverage
        uses: actions/upload-artifact@v4
        with:
          name: code-coverage
          path: |
           coverage.out
           pr_num.txt
           base.txt
           head.txt