name: Docker

on:
  push:

jobs:
  # Set variables that will be available to all builds.
  env_vars:
    runs-on: ubuntu-latest
    outputs:
      release_version: ${{ steps.release_version.outputs.release_version }}
      binary: ${{ steps.binary.outputs.binary }}
    steps:
      - id: release_version
        run: |
          RELEASE_VERSION=$(echo ${{ github.ref_name }} | sed -e 's/^[vt]//')
          echo "release_version=${RELEASE_VERSION}" >> $GITHUB_OUTPUT
      - id: binary
        run: |
          BINARY=$(basename ${{ github.repository }})
          echo "binary=${BINARY}" >> $GITHUB_OUTPUT

  # Build.
  build:
    runs-on: ubuntu-latest
    needs: [env_vars]
    steps:
      - name: Check out repository into the Go module directory
        uses: actions/checkout@v3

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

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

      - name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          platforms: linux/amd64,linux/arm64/v8
          push: true
          tags: wealdtech/ethdo:latest

      - name: build and push on release
        uses: docker/build-push-action@v4
        if: ${{ github.event.release.tag_name != '' }}
        with:
          context: .
          platforms: linux/amd64,linux/arm64/v8
          push: true
          tags: wealdtech/ethdo:${{ github.event.release.tag_name }}
