-
Notifications
You must be signed in to change notification settings - Fork 43
196 lines (163 loc) · 6.79 KB
/
weblate-update-pot.yml
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
name: Weblate Update POT
on:
schedule:
# run every working day (Monday-Friday) at 1:42AM UTC
- cron: "42 1 * * 0-4"
# allow running manually
workflow_dispatch:
jobs:
update-pot:
# do not run in forks
if: github.repository == 'openSUSE/agama'
runs-on: ubuntu-latest
container:
image: registry.opensuse.org/opensuse/tumbleweed:latest
steps:
- name: Configure and refresh repositories
# disable unused repositories to have a faster refresh
run: zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && zypper ref
- name: Install Default Ruby
run: zypper --non-interactive install --no-recommends ruby
- name: Install tools
run: |
RUBY_VERSION=$(ruby -e "puts RbConfig::CONFIG['ruby_version']")
zypper --non-interactive install --no-recommends diffutils git gettext-tools npm-default "rubygem(ruby:$RUBY_VERSION:yast-rake)" "rubygem(ruby:$RUBY_VERSION:gettext)" yast2-devtools
- name: Checkout Agama sources
uses: actions/checkout@v4
with:
path: agama
- name: Generate web POT file
run: |
cd agama/web
./build_pot
msgfmt --statistics agama.pot
- name: Validate the generated web POT file
run: msgfmt --check-format agama/web/agama.pot
- name: Checkout Weblate sources
uses: actions/checkout@v4
with:
path: agama-weblate
repository: openSUSE/agama-weblate
token: ${{ secrets.GH_TOKEN }}
- name: Configure Git
run: |
git config --global user.name "YaST Bot"
git config --global user.email "[email protected]"
- name: Update web POT file
run: |
mkdir -p agama-weblate/web
cp agama/web/agama.pot agama-weblate/web/agama.pot
# any change besides the timestamp in the POT file?
- name: Check web POT changes
id: check_changes
run: |
git -C agama-weblate diff --ignore-matching-lines="POT-Creation-Date:" web/agama.pot > pot.diff
if [ -s pot.diff ]; then
echo "POT file updated"
echo "pot_updated=true" >> $GITHUB_OUTPUT
else
echo "POT file unchanged"
echo "pot_updated=false" >> $GITHUB_OUTPUT
# reset any possible changes so they are not accidentally committed later
git -C agama-weblate reset --hard
fi
- name: Push updated web POT file
# run only when the POT file has been updated
if: steps.check_changes.outputs.pot_updated == 'true'
run: |
cd agama-weblate
git add web/agama.pot
git commit -m "Update web POT file"$'\n\n'"Agama commit: $GITHUB_SHA"
git push
- name: Merge new POT to web translations
# run only when the POT file has been updated
if: steps.check_changes.outputs.pot_updated == 'true'
run: |
cd agama-weblate/web
find . -name "*.po" -exec msgmerge -U "{}" agama.pot \;
git commit -a -m "Merge new POT file to web translations"$'\n\n'"Agama commit: $GITHUB_SHA"
git push
- name: Install NPM packages
run: |
cd agama/.github/workflows/product_translations
npm ci
- name: Generate products POT file
run: |
cd agama/products.d
../.github/workflows/product_translations/products_pot *.yaml > products.pot
msgfmt --statistics products.pot
- name: Validate the generated products POT file
run: msgfmt --check-format agama/products.d/products.pot
- name: Update products POT file
run: |
mkdir -p agama-weblate/products
cp agama/products.d/products.pot agama-weblate/products/products.pot
# any change besides the timestamp in the POT file?
- name: Check products POT changes
id: check_changes_products
run: |
git -C agama-weblate diff --ignore-matching-lines="POT-Creation-Date:" products/products.pot > pot.diff
if [ -s pot.diff ]; then
echo "POT file updated"
echo "pot_updated=true" >> $GITHUB_OUTPUT
else
echo "POT file unchanged"
echo "pot_updated=false" >> $GITHUB_OUTPUT
fi
- name: Push updated products POT file
# run only when the POT file has been updated
if: steps.check_changes_products.outputs.pot_updated == 'true'
run: |
cd agama-weblate
git add products/products.pot
git commit -m "Update products POT file"$'\n\n'"Agama commit: $GITHUB_SHA"
git push
- name: Merge new POT to product translations
# run only when the POT file has been updated
if: steps.check_changes_products.outputs.pot_updated == 'true'
run: |
cd agama-weblate/products
find . -name "*.po" -exec msgmerge -U '{}' products.pot \;
git commit -a -m "Merge new POT file to product translations"$'\n\n'"Agama commit: $GITHUB_SHA"
git push
- name: Generate service POT file
run: |
cd agama
rake pot
msgfmt --statistics agama.pot
- name: Validate the generated service POT file
run: msgfmt --check-format agama/agama.pot
- name: Update service POT file
run: |
mkdir -p agama-weblate/service
cp agama/agama.pot agama-weblate/service/agama.pot
# any change besides the timestamp in the POT file?
- name: Check service POT changes
id: check_service_changes
run: |
git -C agama-weblate diff --ignore-matching-lines="POT-Creation-Date:" service/agama.pot > pot.diff
if [ -s pot.diff ]; then
echo "POT file updated"
echo "pot_updated=true" >> $GITHUB_OUTPUT
else
echo "POT file unchanged"
echo "pot_updated=false" >> $GITHUB_OUTPUT
# reset any possible changes so they are not accidentally committed later
git -C agama-weblate reset --hard
fi
- name: Push updated service POT file
# run only when the POT file has been updated
if: steps.check_service_changes.outputs.pot_updated == 'true'
run: |
cd agama-weblate
git add service/agama.pot
git commit -m "Update service POT file"$'\n\n'"Agama commit: $GITHUB_SHA"
git push
- name: Merge service POT to service translations
# run only when the POT file has been updated
if: steps.check_service_changes.outputs.pot_updated == 'true'
run: |
cd agama-weblate/service
find . -name "*.po" -exec msgmerge -U "{}" agama.pot \;
git commit -a -m "Merge new POT file to service translations"$'\n\n'"Agama commit: $GITHUB_SHA"
git push