name: On release

on:
  workflow_dispatch:
  release:
    types: [published]

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - id: lowercaseRepo
        uses: ASzc/change-string-case-action@v6
        with:
          string: ${{ github.repository }}
      - name: Log in to the Container registry
        uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Create tag variables
        env:
          TAG: ${{ github.ref_name }}
          LOWERCASE_REPO: ${{ steps.lowercaseRepo.outputs.lowercase }}
        run: |
          BUILD_TYPE=$([[ "${TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && echo "stable" || echo "beta")
          echo "BUILD_TYPE=${BUILD_TYPE}" >> $GITHUB_ENV
          echo "BASE=ghcr.io/${LOWERCASE_REPO}" >> $GITHUB_ENV
          echo "BUILD_TAG=${GITHUB_SHA::7}" >> $GITHUB_ENV
          echo "CLEAN_VERSION=$(echo ${GITHUB_REF##*/} | tr '[:upper:]' '[:lower:]' | sed 's/^[v]//')" >> $GITHUB_ENV
      - name: Tag and push the main image
        run: |
          VERSION_TAG=${BASE}:${CLEAN_VERSION}
          STABLE_TAG=${BASE}:stable
          PULL_TAG=${BASE}:${BUILD_TAG}
          docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG} docker://${VERSION_TAG}
          for variant in standard-arm64 tensorrt tensorrt-jp4 tensorrt-jp5 rk h8l rocm; do
            docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG}-${variant} docker://${VERSION_TAG}-${variant}
          done

          # stable tag
          if [[ "${BUILD_TYPE}" == "stable" ]]; then
            docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG} docker://${STABLE_TAG}
            for variant in standard-arm64 tensorrt tensorrt-jp4 tensorrt-jp5 rk h8l rocm; do
              docker run --rm -v $HOME/.docker/config.json:/config.json quay.io/skopeo/stable:latest copy --authfile /config.json --multi-arch all docker://${PULL_TAG}-${variant} docker://${STABLE_TAG}-${variant}
            done
          fi