name: Synchronize Weblate Branch on: workflow_dispatch: schedule: - cron: '15 18 * * *' env: DEVELOP_BRANCH: dev WEBLATE_BRANCH: weblate jobs: check: name: Check Branches runs-on: ubuntu-latest outputs: behind: ${{ steps.check.outputs.behind }} ahead: ${{ steps.check.outputs.ahead }} steps: - name: Checkout uses: actions/checkout@v4 with: ref: ${{ env.DEVELOP_BRANCH }} clean: false fetch-depth: 0 - name: Check branches id: check run: | git fetch --all git branch $WEBLATE_BRANCH origin/$WEBLATE_BRANCH echo "behind=$(git rev-list --count $WEBLATE_BRANCH..$DEVELOP_BRANCH)" >> $GITHUB_OUTPUT echo "ahead=$(git rev-list --count $DEVELOP_BRANCH..$WEBLATE_BRANCH)" >> $GITHUB_OUTPUT - name: Echo outputs run: | echo "behind: ${{ steps.check.outputs.behind }}" echo "ahead: ${{ steps.check.outputs.ahead }}" force-update: name: Force Update Weblate Status runs-on: ubuntu-latest needs: check if: ${{ needs.check.outputs.behind > 0 }} env: WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: python-version: '3.13.5' - name: Install wlc run: pip install wlc - name: Update weblate repository run: wlc --key $WEBLATE_TOKEN pull - name: Push weblate branch run: wlc --key $WEBLATE_TOKEN push sync-branch: name: Sync Weblate Branch runs-on: ubuntu-latest needs: [check, force-update] if: ${{ needs.check.outputs.ahead > 0 || needs.check.outputs.behind > 0 && always() }} steps: - name: Checkout uses: actions/checkout@v4 with: ref: ${{ env.DEVELOP_BRANCH }} fetch-depth: 0 - name: Set up git run: | git config --global user.name 'Weblate' git config --global user.email 'weblate@nginxui.com' - name: Push changes of weblate branch to develop branch run: | git fetch origin git merge --ff-only -- origin/${{ env.WEBLATE_BRANCH }} git push origin ${{ env.DEVELOP_BRANCH }}