name: Build

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  buildWindows:
    name: Build Windows
    runs-on: windows-latest
    steps:
      - name: Set up Go 1.x
        uses: actions/setup-go@v3
        with:
          go-version: 1.23
        id: go

      - name: Checkout code
        uses: actions/checkout@v3

      - name: Get dependencies
        run: |
          go get -v -t -d ./...
      - name: Test
        run: go test ./...
  build:
    name: Build Linux
    runs-on: ubuntu-latest

    steps:
      - name: Set up Go 1.x
        uses: actions/setup-go@v3
        with:
          go-version: 1.23
        id: go

      - name: Checkout code
        uses: actions/checkout@v3

      - name: Get dependencies
        run: |
          go get -v -t -d ./...
          if [ -f Gopkg.toml ]; then
              curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
              dep ensure
          fi
      - name: Test
        run: go test ./...
      - name: Coverage
        run: |
          go get github.com/axw/gocov/gocov
          go get github.com/AlekSi/gocov-xml
          go install github.com/axw/gocov/gocov
          go install github.com/AlekSi/gocov-xml
      - run: |
          go test -v -coverprofile cover.out ./...
          gocov convert cover.out | gocov-xml > coverage.xml
      - uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: ./coverage.xml
          flags: unittests
          fail_ci_if_error: false
          verbose: true
