name: MXE Docker Image CI

on:
  push:
    paths:
    - scripts/docker/mxe-build-container/*
    - .github/workflows/mxe-docker*

jobs:
  mxe-build-container-stage1:
    runs-on: ubuntu-latest
    env:
      # IMPORTANT: use the second digit to test new versions, each new official build should be n.0 with the first one being 1.0
      #            as you test changes toward a new release, call those 1.1, 1.2, 1.3, etc
      #            VERSION is just that version presented as a string constant
      #
      VERSION: ${{ '1.0' }}

    steps:
    - uses: actions/checkout@v1

      # Because, reasons, we can't really do anything in YAML, so do this crazy shell callout thingy in order to assemble
      # sane variables to use later in this job - if someone knows an easier way to do this, please let me know!
      # This abomination below assembles the docker image NAME and appends ".stage1" to the VERSION
    - name: set env
      run: |
        v=${{ env.VERSION }}
        s=".stage1"
        b=${{ github.ref }} # -BRANCH suffix, unless the branch is master
        b=${b/refs\/heads\//}
        b=${b,,} # the name needs to be all lower case
        if [ $b = "master" ] ; then b="" ; else b="-$b" ; fi
        echo "::set-env name=NAME::subsurface/mxe-build-container${b}:${v}${s}"

    - name: Build and Publish stage 1 Docker image to Dockerhub
      uses: elgohr/Publish-Docker-Github-Action@master
      with:
        name:       ${{ env.NAME }}
        username:   ${{ secrets.DOCKER_USERNAME }}
        password:   ${{ secrets.DOCKER_PASSWORD }}
        dockerfile: 'Dockerfile-stage1'
        workdir:    './scripts/docker/mxe-build-container/'

    - name: Trigger stage 2 to run
      # this triggers a dispatch event in our own repository - this allows us to work around the
      # 6h runtime max (as on a two core system the total build time of this container is closer to 7h)
      # we use the event_type to pass the version that we are building to the second stage
      run: |
        curl -XPOST -H 'authorization: token ${{ secrets.ACCESS_TOKEN }}' \
                    -H "Accept: application/vnd.github.everest-preview+json" \
                    -H "Content-Type: application/json" \
                    https://api.github.com/repos/subsurface-divelog/subsurface/dispatches \
                    --data '{"event_type": "${{ env.VERSION }}", "client_payload": { "target_branch": "${{ github.ref }}" } }'
