name: Sync to Codeberg
concurrency:
    group: ${{ github.ref }}
    cancel-in-progress: true
on:
    push:
    workflow_dispatch:
    schedule:
        - cron: "0 */6 * * *"

jobs:
    codeberg:
        name: Sync Codeberg and Github

        runs-on: self-hosted
        steps:
            - uses: actions/checkout@v3

            - name: Set up SSH private key
              run: |
                  mkdir -p ~/.ssh
                  echo "${{ env.ssh_private_key }}" > ~/.ssh/id_rsa
                  chmod 600 ~/.ssh/id_rsa
              env:
                  ssh_private_key: ${{ secrets.CODEBERG }}

            - name: Add SSH known host
              run: |
                  mkdir -p ~/.ssh
                  ssh-keyscan -t rsa codeberg.org >> ~/.ssh/known_hosts

            - name: Set up SSH username
              run: |
                  export GIT_SSH_COMMAND="ssh -v -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -l git"

            - name: Add remote mirror and push
              run: |
                  if git remote get-url mirror > /dev/null 2>&1; then
                    git remote remove mirror
                  fi
                  git remote add mirror "${{ env.target_repo_url}}"
                  git fetch --unshallow
                  git push --tags --force --prune mirror "refs/remotes/origin/*:refs/heads/*"
              env:
                  target_repo_url: "git@codeberg.org:thororen/Equicord.git"

            - name: Clean up
              run: git remote remove mirror
