name: coverage

on:
  push:
    branches: [ main, v3, v4 ]
  pull_request:
    branches: [ main, v3, v4 ]
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:

  build:
    runs-on: ubuntu-latest
    steps:
    - name: checkout code
      uses: actions/checkout@v4
      with:
        filter: 'blob:none'

    - name: setup go
      uses: actions/setup-go@v5
      with:
        cache-dependency-path: "**/*.sum"
        go-version: 'stable' 

    - name: test coverage
      run: |
        go test -v -cover ./... -coverprofile coverage.out -coverpkg ./...
        go tool cover -func coverage.out -o coverage.out

    - name: coverage badge
      uses: tj-actions/coverage-badge-go@v1
      with:
        green: 80
        filename: coverage.out

    - uses: stefanzweifel/git-auto-commit-action@v4
      id: auto-commit-action
      with:
        commit_message: Apply Code Coverage Badge
        skip_fetch: true
        skip_checkout: true
        file_pattern: ./README.md

    - name: Push Changes
      if: steps.auto-commit-action.outputs.changes_detected == 'true'
      uses: ad-m/github-push-action@master
      with:
        github_token: ${{ github.token }}
        branch: ${{ github.ref }}