name: Go

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

permissions:
  contents: read  #  to fetch code (actions/checkout)

jobs:

  build:
    permissions:
      contents: read  #  to fetch code (actions/checkout)
      checks: write  #  to create a new check based on the results (shogo82148/actions-goveralls)

    name: Build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        # tests for target OS
        os: [ubuntu-latest, macos-latest]
    steps:

    - name: Check out code into the Go module directory
      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

    - name: Set up Go 1.x
      uses: actions/setup-go@v5
      with:
        go-version-file: go.mod
        check-latest: true
      id: go

    - name: Install CI
      run: |
        go get -v -t -d ./...

    - name: Install additional CI for nektos/act
      run: |
            apt update
            apt install -y make gcc libc-dev git
      if: github.actor == 'nektos/act' && matrix.os == 'ubuntu-latest'

    - name: Test
      run: make test

    - name: Send coverage
      uses: shogo82148/actions-goveralls@v1
      with:
        path-to-profile: profile.cov
      if: github.actor != 'nektos/act' && matrix.os == 'ubuntu-latest'
      continue-on-error: true
