diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index abce9014..276d8404 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: push: branches: - '*' - - '!main' + - '!weblate' paths: - "app/**/*.js" - "app/**/*.vue" diff --git a/.github/workflows/documents.yml b/.github/workflows/documents.yml index 89c87207..874ef9ee 100644 --- a/.github/workflows/documents.yml +++ b/.github/workflows/documents.yml @@ -4,7 +4,6 @@ on: push: branches: - '*' - - '!main' paths: - "docs/**/*.js" - "docs/**/*.ts" diff --git a/.github/workflows/branches.yml b/.github/workflows/weblate-pull.yml similarity index 96% rename from .github/workflows/branches.yml rename to .github/workflows/weblate-pull.yml index f24db064..f5b023f1 100644 --- a/.github/workflows/branches.yml +++ b/.github/workflows/weblate-pull.yml @@ -1,4 +1,4 @@ -name: Synchronize Branches +name: Weblate Pull Branch on: workflow_dispatch: diff --git a/.github/workflows/weblate-sync.yml b/.github/workflows/weblate-sync.yml new file mode 100644 index 00000000..b1c6c494 --- /dev/null +++ b/.github/workflows/weblate-sync.yml @@ -0,0 +1,86 @@ +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.10' + + - 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 && 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 }}