name: Create Sync Action

on:
  workflow_dispatch:
  push:
    branches:
      - preview

env:
  SOURCE_BRANCH_NAME: ${{ github.ref_name }}

jobs:
  sync_changes:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: read
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4.1.1
        with:
          persist-credentials: false
          fetch-depth: 0

      - name: Setup GH CLI
        run: |
          type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
          curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
          sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
          echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
          sudo apt update
          sudo apt install gh -y

      - name: Push Changes to Target Repo A
        env:
          GH_TOKEN: ${{ secrets.ACCESS_TOKEN }}
        run: |
          TARGET_REPO="${{ secrets.TARGET_REPO_A }}"
          TARGET_BRANCH="${{ secrets.TARGET_REPO_A_BRANCH_NAME }}"
          SOURCE_BRANCH="${{ env.SOURCE_BRANCH_NAME }}"

          git checkout $SOURCE_BRANCH
          git remote add target-origin-a "https://$GH_TOKEN@github.com/$TARGET_REPO.git"
          git push target-origin-a $SOURCE_BRANCH:$TARGET_BRANCH

      - name: Push Changes to Target Repo B
        env:
          GH_TOKEN: ${{ secrets.ACCESS_TOKEN }}
        run: |
          TARGET_REPO="${{ secrets.TARGET_REPO_B }}"
          TARGET_BRANCH="${{ secrets.TARGET_REPO_B_BRANCH_NAME }}"
          SOURCE_BRANCH="${{ env.SOURCE_BRANCH_NAME }}"

          git remote add target-origin-b "https://$GH_TOKEN@github.com/$TARGET_REPO.git"
          git push target-origin-b $SOURCE_BRANCH:$TARGET_BRANCH