# yamllint disable rule:line-length
---
name: Build Docker Images

on: # yamllint disable-line rule:truthy
  push:
    branches:
      - master
      - dev
  workflow_dispatch:

jobs:
  build:
    name: Build Docker Images
    runs-on: ubuntu-latest
    outputs:
      date: ${{ steps.date.outputs.date }}
      tag: ${{ steps.branch.outputs.tag }}
      version: ${{ steps.version.outputs.version }}

    steps:
      - name: Check out repository
        uses: actions/checkout@v2

      - name: Set up QEMU
        id: qemu
        uses: docker/setup-qemu-action@v1
        with:
          image: tonistiigi/binfmt:latest
          platforms: all

      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v1

      - name: Log in to GitHub Container Registry
        if: github.event_name != 'pull_request'
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GHCR_PAT }}

      #      - name: Login to Docker Hub
      #        if: github.event_name != 'pull_request'
      #        uses: docker/login-action@v1
      #        with:
      #          username: ${{ secrets.DOCKER_USERNAME }}
      #          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Get current date
        id: date
        run: echo "::set-output name=date::$(date +"%Y-%m-%dT%H:%M:%SZ")"

      - name: Get Crafty version
        id: version
        run: |
          MAJOR=$(cat app/config/version.json | jq '.major' )
          MINOR=$(cat app/config/version.json | jq '.minor' )
          SUB=$(cat app/config/version.json | jq '.sub' )
          echo "::set-output name=version::$MAJOR.$MINOR.$SUB"

      - name: Get branch tag
        id: branch
        run: |
          if [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
            echo "::set-output name=tag::latest"
          else
            echo "::set-output name=tag::$(echo "${{ github.ref }}" | sed -e 's/refs\/heads\///g')"
          fi

      - name: Build and push Docker image
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ./Dockerfile
          platforms: linux/arm64,linux/amd64
          push: ${{ github.event_name != 'pull_request' }}
          cache-from: type=registry,ref=${{ github.repository }}:${{ steps.branch.outputs.tag }}
          cache-to: type=inline
          build-args: |
            BUILD_DATE=${{ steps.date.outputs.date }}
            BUILD_REF=${{ github.sha }}
            CRAFTY_VER=${{ steps.version.outputs.version }}
          tags: |
            ghcr.io/${{ github.repository }}:${{ steps.branch.outputs.tag }}

#           {{ GITHUB_REPOSITORY }}:${{ steps.branch.outputs.tag }}