summaryrefslogtreecommitdiff
path: root/.github/workflows/l10n.yml
blob: 4220c5c65fe620eec989e7b8e08647e9c28d1cb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
---
name: Translation

# yamllint disable-line rule:truthy
on:
  workflow_dispatch:
  workflow_run:
    workflows:
      - Integration
    types:
      - completed
    branches:
      - master
  schedule:
    - cron: "05 07 * * 5"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref_name }}
  cancel-in-progress: false

permissions:
  contents: read

env:
  PYTHON_VERSION: "3.13"

jobs:
  update:
    if: github.repository_owner == 'searxng' && github.event.workflow_run.conclusion == 'success'
    name: Update
    runs-on: ubuntu-24.04-arm
    permissions:
      # For "make V=1 weblate.push.translations"
      contents: write

    steps:
      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: "${{ env.PYTHON_VERSION }}"

      - name: Checkout
        uses: actions/checkout@v4
        with:
          token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
          fetch-depth: "0"

      - name: Setup cache Python
        uses: actions/cache@v4
        with:
          key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
          restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
          path: "./local/"

      - name: Setup venv
        run: make V=1 install

      - name: Setup Weblate
        run: |
          mkdir -p ~/.config
          echo "${{ secrets.WEBLATE_CONFIG }}" > ~/.config/weblate

      - name: Setup Git
        run: |
          git config --global user.email "searxng-bot@users.noreply.github.com"
          git config --global user.name "searxng-bot"

      - name: Update translations
        run: make V=1 weblate.push.translations

  pr:
    if: |
      github.repository_owner == 'searxng'
      && (github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
    name: Pull Request
    runs-on: ubuntu-24.04-arm
    permissions:
      # For "make V=1 weblate.translations.commit"
      contents: write
      # For action "peter-evans/create-pull-request"
      pull-requests: write

    steps:
      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: "${{ env.PYTHON_VERSION }}"

      - name: Checkout
        uses: actions/checkout@v4
        with:
          token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
          fetch-depth: "0"

      - name: Setup cache Python
        uses: actions/cache@v4
        with:
          key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
          restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
          path: "./local/"

      - name: Setup venv
        run: make V=1 install

      - name: Setup Weblate
        run: |
          mkdir -p ~/.config
          echo "${{ secrets.WEBLATE_CONFIG }}" > ~/.config/weblate

      - name: Setup Git
        run: |
          git config --global user.email "searxng-bot@users.noreply.github.com"
          git config --global user.name "searxng-bot"

      - name: Merge and push translation updates
        run: make V=1 weblate.translations.commit

      - name: Create PR
        id: cpr
        uses: peter-evans/create-pull-request@v7
        with:
          author: "${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>"
          committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
          title: "[l10n] update translations from Weblate"
          commit-message: "[l10n] update translations from Weblate"
          branch: "translations_update"
          delete-branch: "true"
          draft: "false"
          signoff: "false"
          labels: |
            translation

      - name: Display information
        run: |
          echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
          echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"