name: Miller-Go

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]

    steps:
    - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3

    - name: Set up Go
      uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c
      with:
        go-version: 1.24

    - name: Build
      run: make build

    - name: Unit tests
      run: make unit-test

    - name: Regression tests
      # We run these with a convoluted path to ensure the tests don't
      # rely on a specific invocation
      run: test/../mlr regtest -S

    - name: PrepareArtifactNonWindows
      if: matrix.os != 'windows-latest'
      run: mkdir -p bin/${{matrix.os}} && cp mlr bin/${{matrix.os}}

    - name: PrepareArtifactWindows
      if: matrix.os == 'windows-latest'
      run: mkdir -p bin/${{matrix.os}} && cp mlr.exe bin/${{matrix.os}}

    - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
      with:
        name: mlr-${{matrix.os}}
        path: bin/${{matrix.os}}/*
