name: Sync _locales/ between <chromium|firefox>/extension/, then ** to adamlui/ai-apps/chatgpt-auto-continue/, then greasemonkey/ to adamlui/userscripts/chatgpt/chatgpt-auto-continue/

on:
  push:
    branches: [main]
    paths: ["**", "!.*", "!package*.json", "!eslint.config*"]

jobs:
  build:
    if: (github.repository == 'adamlui/chatgpt-auto-continue') && (github.event.commits[0].committer.username != 'kudo-sync-bot')
    runs-on: ubuntu-latest
    env:
      TZ: PST8PDT

    steps:

      - name: Checkout adamlui/chatgpt-auto-continue
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.REPO_SYNC_PAT }}
          repository: adamlui/chatgpt-auto-continue
          path: adamlui/chatgpt-auto-continue
          fetch-depth: 2

      - name: Checkout adamlui/ai-apps
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.REPO_SYNC_PAT }}
          repository: adamlui/ai-apps
          path: adamlui/ai-apps

      - name: Checkout adamlui/userscripts
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.REPO_SYNC_PAT }}
          repository: adamlui/userscripts
          path: adamlui/userscripts

      - name: Sync _locales/ between <chromium|firefox>/extension/
        run: |
          cd ${{ github.workspace }}/adamlui/chatgpt-auto-continue
          ff_dir="firefox/extension/_locales"
          chromium_dir="chromium/extension/_locales"
          
          # Loop thru all lang dirs in firefox
          for locale in $(find "$ff_dir" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;) ; do
            ff_file="$ff_dir/$locale/messages.json"
            chromium_file="$chromium_dir/$locale/messages.json"
            if [[ -f "$ff_file" && -f "$chromium_file" ]] ; then

              # Get the latest commit timestamps for both files
              ff_timestamp=$(git log -1 --format="%ct" -- "$ff_file" 2>/dev/null || echo 0)
              chromium_timestamp=$(git log -1 --format="%ct" -- "$chromium_file" 2>/dev/null || echo 0)

              # Sync the most recently updated messages.json to the other dir
              if [[ $ff_timestamp -ne $chromium_timestamp ]] ; then
                [[ "$locales_updated" != true ]] && locales_updated=true
                if [[ $ff_timestamp -gt $chromium_timestamp ]] ; then
                     cp -f "$ff_file" "$chromium_file"
                else cp -f "$chromium_file" "$ff_file" ; fi
              fi

            fi
          done
          if [[ "$locales_updated" == true ]] ; then echo "LOCALES_UPDATED=true" >> $GITHUB_ENV ; fi

      - name: Sync ** to adamlui/ai-apps/chatgpt-auto-continue/
        run: |
          rsync -avhr --delete --exclude={'.*','eslint*','package*.json'} \
            ${{ github.workspace }}/adamlui/chatgpt-auto-continue/ \
            ${{ github.workspace }}/adamlui/ai-apps/chatgpt-auto-continue/

      - name: Sync greasemonkey/ to adamlui/userscripts/chatgpt/chatgpt-auto-continue/
        run: |
          rsync -avhr --delete \
            ${{ github.workspace }}/adamlui/chatgpt-auto-continue/greasemonkey/ \
            ${{ github.workspace }}/adamlui/userscripts/chatgpt/chatgpt-auto-continue/

      - name: Escape backticks in commit msg
        env:
          COMMIT_MSG: ${{ github.event.head_commit.message }}
        run: |
          echo "ESCAPED_MSG<<EOF" >> $GITHUB_ENV
          echo "$COMMIT_MSG" | sed 's/`/\`/g' >> $GITHUB_ENV
          echo "EOF" >> $GITHUB_ENV
      
      - name: Config committer
        run: |
          gpg --batch --import <(echo "${{ secrets.GPG_PRIVATE_KEY }}")
          git config --global commit.gpgsign true
          git config --global user.name "kudo-sync-bot"
          git config --global user.email "auto-sync@kudoai.com"
          git config --global user.signingkey "${{ secrets.GPG_PRIVATE_ID }}"

      - name: Push changes to adamlui/chatgpt-auto-continue
        if: env.LOCALES_UPDATED == 'true'
        run: |
          cd ${{ github.workspace }}/adamlui/chatgpt-auto-continue
          git add .
          git commit -n -m "$ESCAPED_MSG ↞ [auto-sync from https://github.com/adamlui/chatgpt-auto-continue]" || true
          git push

      - name: Push changes to adamlui/ai-apps
        run: |
          cd ${{ github.workspace }}/adamlui/ai-apps
          git add .
          git commit -n -m "$ESCAPED_MSG ↞ [auto-sync from https://github.com/adamlui/chatgpt-auto-continue]" || true
          git push

      - name: Push changes to adamlui/userscripts
        run: |
          cd ${{ github.workspace }}/adamlui/userscripts
          git add .
          git commit -n -m "$ESCAPED_MSG ↞ [auto-sync from https://github.com/adamlui/chatgpt-auto-continue]" || true
          git push
