name: On release

on:
  workflow_dispatch:
  release:
    types: [published]

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - id: lowercaseRepo
        uses: ASzc/change-string-case-action@v6
        with:
          string: ${{ github.repository }}
      - name: Log in to the Container registry
        uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Create tag variables
        run: |
          BUILD_TYPE=$([[ "${{ github.ref_name }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && echo "stable" || echo "beta")
          echo "BUILD_TYPE=${BUILD_TYPE}" >> $GITHUB_ENV
          echo "BASE=ghcr.io/${{ steps.lowercaseRepo.outputs.lowercase }}" >> $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; 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; 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
