name: Go
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - '**'
  workflow_dispatch:
  merge_group:
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - name: Check out code into the Go module directory
      uses: actions/checkout@v3
    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version-file: go.mod
      id: go
    - name: Cache dependencies
      uses: actions/cache@v2
      with:
        path: |
          ~/.cache/go-build
          ~/go/pkg/mod
        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ runner.os }}-go-
    - name: unit-test
      run: go test -v ./... -coverprofile cover.out
    - uses: codecov/codecov-action@v4
      with:
        files: cover.out
        functionalities: fixes
        token: ${{ secrets.CODECOV_TOKEN }}

  go-apidiff:
    name: go-apidiff
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    steps:
    - name: Check out code into the Go module directory
      uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version-file: go.mod
      id: go
    - name: Print out Go env
      run: go env
    - name: Run go-apidiff
      uses: joelanford/go-apidiff@main