name: Build master in docker

on:
  # pull_request:
  #   branches:
  #     - 'master'
  push:
    branches:
      - 'master'
    paths-ignore:
      - 'README.md'

env:
  OPAMROOT: /home/opam/.opam
  OPAMCONFIRMLEVEL: unsafe-yes
  GT_WITH_DOCS: yes

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
      cancel-in-progress: true
    runs-on: ${{ matrix.os }}
    container:
      image: ocaml/opam:ubuntu-lts-ocaml-4.14
      options: --user root # Kind of important dirty hack
      #options: --user opam               # dirty hack

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - run: |
          sudo apt-get update
          sudo apt-get install pkg-config libpcre2-dev m4 -y
      - run: opam --version

      - name: bisect many not work without it
        run: |
          git config --global --add safe.directory /__w/GT/GT
          #git submodule update --init


      - name: Install dependecies for documentation
        run: |
          sudo apt-get install pkg-config libpcre2-dev -y

      - run: opam install . --deps-only --with-test --with-doc
      - run: opam exec -- dune build @check --profile=release
      - run: opam exec -- dune test --profile=release

      - name: Send coverage report to Coveralls
        run: |
          opam exec -- make coverage
          opam exec -- bisect-ppx-report send-to Coveralls --coverage-path $BISECT_DIR
        env:
          BISECT_DIR: /tmp/GTcov
          COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PULL_REQUEST_NUMBER: ${{ github.event.number }}

      - name: Installing using Opam
        run: |
          opam exec -- dune build @install
          opam exec -- dune install

      - name: Deploy documentation
        #if: ${{ github.event.pull_request.head.repo.full_name == 'PLTools/OCanren' }}
        if: false
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./_build/default/_doc/_html

      - name: Build API documentation
        if: github.event_name != 'pull_request'
        run: |
          opam exec -- make install odig
          echo "ODIG_DOC_LOC=$(opam exec -- odig cache path)/html" >> $GITHUB_ENV

      - name: Deploy documentation
        #if: ${{ github.event.pull_request.head.repo.full_name == 'PLTools/GT' }}
        #if: false
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir:  ${{ env.ODIG_DOC_LOC }}

      - name: List files
        run: opam show --list-files GT
