name: build
on:
  pull_request:
    branches:
      - master
  push:
    branches:
      - master
jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        os:
          - macos-latest
          - ubuntu-latest
          - windows-latest
        ocaml-compiler:
          - 4.14.x
        include:
          - os: ubuntu-latest
            ocaml-compiler: 4.08.0
          - os: ubuntu-latest
            ocaml-compiler: 5.1.x
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Use Ocaml ${{ matrix.ocaml-compiler }}
        uses: ocaml/setup-ocaml@v2
        with:
          ocaml-compiler: ${{ matrix.ocaml-compiler }}
      - name: Setup GeneWeb dependencies + ocamlformat
        run: |
          opam pin add . -y --no-action
          opam depext -y geneweb
          opam install -y ./*.opam --deps-only --with-test
          opam pin ocamlformat 0.24.1
      - name: Make ocamlformat > build/distrib
        run: |
          opam exec -- ocaml ./configure.ml --release
          opam exec -- make fmt distrib
      - name: Make CI tests
        run: opam exec -- make ci
