name: Sync Docker Images

on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * *" # Run every day

jobs:
  sync:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      packages: write
      contents: read
    if: github.repository == 'traefik/traefik'

    steps:
      - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

      - uses: imjasonh/setup-crane@31b88efe9de28ae0ffa220711af4b60be9435f6e # v0.4
      
      - name: Sync
        run: |
          EXCLUDED_TAGS="1.7.9-alpine v1.0.0-beta.392 v1.0.0-beta.404 v1.0.0-beta.704 v1.0.0-rc1 v1.7.9-alpine"
          EXCLUDED_REGEX=$(echo $EXCLUDED_TAGS | sed 's/ /|/g')
          diff <(crane ls traefik) <(crane ls ghcr.io/traefik/traefik) | grep '^<' | awk '{print $2}' | while read -r tag; do [[ "$tag" =~ ^($EXCLUDED_REGEX)$ ]] || (echo "Processing image: traefik:$tag"; crane cp "traefik:$tag" "ghcr.io/traefik/traefik:$tag"); done
          crane cp traefik:latest ghcr.io/traefik/traefik:latest
