#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

cat ./mirror.txt | while read line; do
  line="${line// /}"
  if [[ "${line}" == "#"* ]] || [[ "${line}" == "" ]]; then
    continue
  fi

  host="${line%%/*}"
  image="${line#*/}"
  workflow=".github/workflows/mirror-${host//./-}-${image//\//-}.yml"

  cat <<EOF >"${workflow}"
name: "Sync ${host}/${image}"
on:
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * *"

jobs:
  sync-image:
    runs-on: ubuntu-latest
    steps:
    - name: Sync
      env:
        CREDS: "\${{ secrets.CREDS }}"
        MIRROR: "\${{ secrets.MIRROR }}"
      run: |
        docker run --rm -it ananace/skopeo \\
          sync --src docker --dest docker --dest-tls-verify=false --dest-creds "\${CREDS}" -f oci \\
          "${host}/${image}" "\${MIRROR}/${image}"

EOF

done