# This is a basic workflow to help you get started with Actions

name: docker CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    branches: [ master ]
    tags: [ "v*.*.*" ]
  pull_request:
    branches: [ master ]

jobs:
  opam:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        coq_version:
          - '8.20'
          - '9.0'
          - '9.1'
          - '9.2'
    steps:
    - uses: actions/checkout@v2
    - uses: coq-community/docker-coq-action@v1
      with:
        opam_file: './rocq-hierarchy-builder.opam'
        coq_version: ${{ matrix.coq_version }}
        export: 'OPAMWITHTEST'  # space-separated list of variables
      env:
        OPAMWITHTEST: 'true'
      

  release:
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/')
    needs: [opam]
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Inject slug/short variables
        uses: rlespinasse/github-slug-action@v4

      - name: Create archive
        run: |
          VERSION="${GITHUB_REF_NAME_SLUG#v}"
          git archive -o hierarchy-builder-$VERSION.tar.gz --prefix=hierarchy-builder-$VERSION/ $GITHUB_SHA .

      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          files: hierarchy-builder-*.tar.gz
          fail_on_unmatched_files: true
          prerelease: true
          generate_release_notes: true
          name: Hierarchy Builder ${{ github.ref }}

      - name: Use OCaml 4.14.x
        uses: ocaml/setup-ocaml@v3
        with:
          ocaml-compiler: 4.14.x
          opam-local-packages: |
            !coq-hierarchy-builder*.opam

      - name: Write PAT
        env:
          OPAM_PUBLISH_TOKEN: ${{ secrets.OPAM_PUBLISH_TOKEN }}
        run: |
          mkdir -p ~/.opam/plugins/opam-publish
          printf "$OPAM_PUBLISH_TOKEN" > ~/.opam/plugins/opam-publish/coqelpibot.token
          
      - name: Setup SSH
        uses: webfactory/ssh-agent@v0.8.0
        with:
          ssh-private-key: ${{ secrets.BOT_SSH_KEY }}
          
      - name: Install opam-publish # 2.0.3 because more recent versions do not respect OPAMYES
        run: opam install -y -j 2 opam-publish=2.0.3

      - name: Publish
        run: |
          eval $(opam env)
          git config --global user.name coqelpibot
          git config --global user.email coqelpibot@inria.fr
          OPAM_SUITE=released
          TAG=`git tag --sort=-v:refname|head -1`
          opam-publish --tag=$TAG --packages-directory=$OPAM_SUITE/packages --repo=coq/opam --no-browser -v ${TAG##v}	https://github.com/math-comp/hierarchy-builder/releases/download/$TAG/hierarchy-builder-${TAG##v}.tar.gz

