Skip to content

Commit d7de6df

Browse files
committed
update mirror status
1 parent ed9fe64 commit d7de6df

File tree

3 files changed

+58
-5
lines changed

3 files changed

+58
-5
lines changed

.github/workflows/update.yml

+12-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ concurrency: update
99

1010
jobs:
1111

12-
publish:
12+
update:
1313
runs-on: ubuntu-latest
1414
container:
1515
image: archlinux
@@ -20,7 +20,7 @@ jobs:
2020
- uses: arch4edu/cactus/actions/upgrade-archlinux@main
2121

2222
- name: Install runtime dependencies
23-
run: pacman -S --noconfirm --needed git python-django python-mysqlclient python-pygithub python-tornado python-yaml
23+
run: pacman -S --noconfirm --needed git python-django python-mysqlclient python-pygithub python-requests python-tornado python-yaml
2424

2525
- uses: actions/checkout@master
2626
with:
@@ -36,16 +36,23 @@ jobs:
3636
repository: petronny/djangorm
3737
path: djangorm
3838

39+
- uses: actions/checkout@master
40+
with:
41+
repository: arch4edu/mirrorlist
42+
path: mirrorlist
43+
3944
- uses: petronny/git-config-user@master
4045
with:
4146
path: pages
4247

4348
- name: Update pages
4449
run: |
45-
cp pages/update-pages.py cactus
46-
python -m cactus.update-pages
50+
cp pages/update-build-status.py cactus
51+
python -m cactus.update-build-status
4752
4853
cd pages
49-
git add index.md
54+
python3 update-mirror-status.py ../mirrorlist
55+
56+
git add index.md mirrors.md
5057
git commit -m "[$(date)] auto update" || exit 0
5158
git push
File renamed without changes.

update-mirror-status.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/bin/python
2+
3+
if __name__ == '__main__':
4+
import sys
5+
import time
6+
import requests
7+
from pathlib import Path
8+
9+
lines = []
10+
lines.append('<script src="./time.js"></script>')
11+
lines.append('# Mirror status')
12+
lines.append(f'Last check: <script type="text/javascript">localize({time.time()});</script>')
13+
lines.append('')
14+
lines.append('|Country|Mirror|Last update|')
15+
lines.append('|:------|:-----|:----------|')
16+
17+
mirrorlist = Path(sys.argv[1]) / 'mirrorlist.arch4edu'
18+
with open(mirrorlist) as f:
19+
_lines = f.readlines()
20+
21+
session = requests.session()
22+
for _line in _lines:
23+
_line = _line.strip('\n')
24+
if _line.startswith('## '):
25+
country = _line[3:]
26+
elif _line.startswith('#Server = '):
27+
mirror = _line[10:-5]
28+
print('Checking', mirror)
29+
try:
30+
last_update = session.get(f'{mirror}/lastupdate', timeout=10)
31+
if last_update.status_code != 200:
32+
status = f'Response {last_update.status_code}'
33+
else:
34+
last_update = last_update.content.decode('utf-8').strip('\n')
35+
status = f'<script type="text/javascript">localize({last_update});</script>'
36+
except Exception as e:
37+
status = type(e).__name__
38+
lines.append('|'.join(['', country, mirror, status, '']))
39+
40+
lines.append('')
41+
lines.append('<script src="./tablefilter/tablefilter.js"></script>')
42+
lines.append('<script src="./table.js"></script>')
43+
44+
45+
with open('mirrors.md', 'w') as f:
46+
f.write('\n'.join(lines))

0 commit comments

Comments
 (0)