name: Build and Push Docker Image

on:
  push:
    branches:
      - 'release/**'
      - 'develop'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Compute image tags
        id: meta
        run: |
          VERSION=$(node -p "require('./package.json').version")
          BRANCH=${GITHUB_REF#refs/heads/}
          echo "version=${VERSION}" >> $GITHUB_OUTPUT

          if [ "$BRANCH" = "develop" ]; then
            echo "tags=reg.i3omb.com/sofarr:develop" >> $GITHUB_OUTPUT
            echo "Building develop image (version ${VERSION})"
          else
            RELEASE_NAME=${BRANCH#release/}
            TAGS="reg.i3omb.com/sofarr:${VERSION}"
            TAGS="${TAGS},reg.i3omb.com/sofarr:${RELEASE_NAME}"
            TAGS="${TAGS},reg.i3omb.com/sofarr:latest"
            echo "tags=${TAGS}" >> $GITHUB_OUTPUT
            echo "Building release image ${VERSION} from branch ${BRANCH}"
          fi

      - name: Build and push Docker image
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: |
            org.opencontainers.image.version=${{ steps.meta.outputs.version }}
            org.opencontainers.image.created=${{ github.event.head_commit.timestamp }}
