name: Publish Docker image

on:
    workflow_dispatch:
        inputs:
            tags:
                description: Image tags
                required: false
                type: string
            build_args:
                description: Build-time variables
                required: false
                type: string
            platforms:
                description: Image platforms (you can specify multiple platforms separated by comma)
                required: false
                type: string
                default: linux/amd64
    workflow_call:
        inputs:
            tags:
                description: Image tags
                required: false
                type: string
            build_args:
                description: Build-time variables
                required: false
                type: string
            platforms:
                description: Image platforms (you can specify multiple platforms separated by comma)
                required: false
                type: string
                default: linux/amd64

jobs:
    run:
        name: Run
        runs-on: ubuntu-latest
        steps:
            -   name: Check out the repo
                uses: actions/checkout@v4
    
            -   name: Set up Docker Buildx
                uses: docker/setup-buildx-action@v3
    
            # Will automatically make nice tags, see the table here https://github.com/docker/metadata-action#basic
            -   name: Docker meta
                id: meta
                uses: docker/metadata-action@v5
                with:
                    images: ghcr.io/blockscout/frontend
    
            -   name: Login to GitHub Container Registry
                uses: docker/login-action@v2
                with:
                    registry: ghcr.io
                    username: ${{ github.actor }}
                    password: ${{ secrets.GITHUB_TOKEN }}
    
            -   name: Add SHORT_SHA env property with commit short sha
                run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV

            -   name: Debug
                env:
                    REF_TYPE: ${{ github.ref_type }}
                    REF_NAME: ${{ github.ref_name }}
                run: |
                    echo "ref_type: $REF_TYPE"
                    echo "ref_name: $REF_NAME"
    
            -   name: Build and push
                uses: docker/build-push-action@v5
                with:
                    context: .
                    file: ./Dockerfile
                    push: true
                    cache-from: type=gha
                    tags: ${{ inputs.tags || steps.meta.outputs.tags }}
                    platforms: ${{ inputs.platforms }}
                    labels: ${{ steps.meta.outputs.labels }}
                    build-args: |
                        GIT_COMMIT_SHA=${{ env.SHORT_SHA }}
                        GIT_TAG=${{ github.ref_type == 'tag' && github.ref_name || '' }}
                        ${{ inputs.build_args }}