ci: add redirects for .html links

This commit is contained in:
AcipenserSturio 2024-08-20 22:23:24 +05:00 committed by kala Asi
parent 8c655e54a5
commit a2f7cd6142
3 changed files with 207 additions and 0 deletions

View file

@ -20,6 +20,7 @@ jobs:
run: |
cd bin
make
python make-redirects.py
- name: add custom domain
run: echo "lipu-sona.pona.la" > public/CNAME
- name: deploy

30
bin/make-redirects.py Normal file
View file

@ -0,0 +1,30 @@
import csv
from pathlib import Path
OUTDIR = Path("../public/")
OUTDIR.mkdir(exist_ok=True)
REDIRECTS = Path("../templates/redirects.csv")
TEMPLATE = """
<head>
<title>lipu sona pona | Redirect</title>
<meta http-equiv="refresh" content="0; url={}" />
</head>
<body>
<h2 style="text-align: center">Redirecting...</h2>
</body>
"""
def redirects():
with open(REDIRECTS) as f:
reader = csv.reader(f)
next(reader) # skip header
for line in reader:
if not line:
continue
dest, origin = line
yield origin, dest
for origin, dest in redirects():
with open(OUTDIR / origin, "w") as f:
f.write(TEMPLATE.format(dest).strip())

176
templates/redirects.csv Normal file
View file

@ -0,0 +1,176 @@
redirect_destination,redirect_origin
credits/,credits.html
license/,license.html
nimi_pi_pu_ala/,nimi_pi_pu_ala.html
personal_style/,personal_style.html
lentan/art_revolution/,art_revolution.html
lentan/chess/,chess.html
lentan/city_names/,city_names.html
lentan/game_patches/,game_patches.html
lentan/game_patches_jp/,game_patches_jp.html
lentan/jan_lawa_pi_linja_ilo/,jan_lawa_pi_linja_ilo.html
lentan/keyboard/,keyboard.html
lentan/la_espero/,la_espero.html
lentan/nasin_juni/,nasin_juni.html
lentan/nasin_tenpo/,nasin_tenpo.html
lentan/o_lawa_e_sona_sina/,o_lawa_e_sona_sina.html
lentan/phonetic_alphabet/,phonetic_alphabet.html
lentan/riichi_mahjong/,riichi_mahjong.html
lentan/shogi/,shogi.html
lentan/sitelen_pona_ibus/,sitelen_pona_ibus.html
lentan/supalape/,supalape.html
de/,de_index.html
de/0/,de_0.html
de/1/,de_1.html
de/2/,de_2.html
de/3/,de_3.html
de/4/,de_4.html
de/5/,de_5.html
de/6/,de_6.html
de/7/,de_7.html
de/7a/,de_7a.html
de/8/,de_8.html
de/9/,de_9.html
de/10/,de_10.html
de/11/,de_11.html
de/12/,de_12.html
de/13/,de_13.html
de/x1/,de_x1.html
de/x2/,de_x2.html
de/answers/,de_answers.html
de/dictionary/,de_dictionary.html
de/sitelen_pona/,de_sitelen_pona.html
en/0/,0.html
en/1/,1.html
en/2/,2.html
en/3/,3.html
en/4/,4.html
en/5/,5.html
en/6/,6.html
en/7/,7.html
en/7a/,7a.html
en/8/,8.html
en/9/,9.html
en/10/,10.html
en/11/,11.html
en/12/,12.html
en/13/,13.html
en/x1/,x1.htm
en/x2/,x2.html
en/answers/,answers.html
en/dictionary/,dictionary.html
en/sitelen_pona/,sitelen_pona.html
eo/,eo_index.html
eo/0/,eo_0.html
eo/1/,eo_1.html
eo/2/,eo_2.html
eo/3/,eo_3.html
eo/4/,eo_4.html
eo/5/,eo_5.html
eo/6/,eo_6.html
eo/7/,eo_7.html
eo/7a/,eo_7a.html
eo/8/,eo_8.html
eo/9/,eo_9.html
eo/10/,eo_10.html
eo/11/,eo_11.html
eo/12/,eo_12.html
eo/13/,eo_13.html
eo/x1/,eo_x1.html
eo/x2/,eo_x2.html
eo/answers/,eo_answers.html
eo/dictionary/,eo_dictionary.html
eo/sitelen_pona/,eo_sitelen_pona.html
pl/,pl_index.html
pl/0/,pl_0.html
pl/1/,pl_1.html
pl/2/,pl_2.html
pl/3/,pl_3.html
pl/4/,pl_4.html
pl/5/,pl_5.html
pl/6/,pl_6.html
pl/7/,pl_7.html
pl/7a/,pl_7a.html
pl/8/,pl_8.html
pl/9/,pl_9.html
pl/10/,pl_10.html
pl/11/,pl_11.html
pl/12/,pl_12.html
pl/13/,pl_13.html
pl/x1/,pl_x1.html
pl/x2/,pl_x2.html
pl/answers/,pl_answers.html
pl/dictionary/,pl_dictionary.html
pl/sitelen_pona/,pl_sitelen_pona.html
pt/,pt_index.html
pt/0/,pt_0.html
pt/1/,pt_1.html
pt/2/,pt_2.html
pt/3/,pt_3.html
pt/4/,pt_4.html
pt/5/,pt_5.html
pt/6/,pt_6.html
pt/7/,pt_7.html
pt/7a/,pt_7a.html
pt/8/,pt_8.html
pt/9/,pt_9.html
pt/10/,pt_10.html
pt/11/,pt_11.html
pt/12/,pt_12.html
pt/13/,pt_13.html
pt/x1/,pt_x1.html
pt/x2/,pt_x2.html
pt/answers/,pt_answers.html
pt/credits/,pt_credits.html
pt/dictionary/,pt_dictionary.html
pt/personal_style/,pt_personal_style.html
pt/sitelen_pona/,pt_sitelen_pona.html
ru/,ru_index.html
ru/0/,ru_0.html
ru/1/,ru_1.html
ru/2/,ru_2.html
ru/3/,ru_3.html
ru/4/,ru_4.html
ru/5/,ru_5.html
ru/6/,ru_6.html
ru/7/,ru_7.html
ru/7a/,ru_7a.html
ru/8/,ru_8.html
ru/9/,ru_9.html
ru/10/,ru_10.html
ru/11/,ru_11.html
ru/12/,ru_12.html
ru/13/,ru_13.html
ru/13_tonsi/,ru_13_tonsi.html
ru/x1/,ru_x1.html
ru/x1_lgbt/,ru_x1_lgbt.html
ru/x2/,ru_x2.html
ru/answers/,ru_answers.html
ru/dictionary/,ru_dictionary.html
ru/sitelen_pona/,ru_sitelen_pona.html
zh/,zh_index.html
zh/0/,zh_0.html
zh/1/,zh_1.html
zh/2/,zh_2.html
zh/3/,zh_3.html
zh/4/,zh_4.html
zh/5/,zh_5.html
zh/6/,zh_6.html
zh/7/,zh_7.html
zh/7a/,zh_7a.html
zh/8/,zh_8.html
zh/9/,zh_9.html
zh/10/,zh_10.html
zh/11/,zh_11.html
zh/12/,zh_12.html
zh/13/,zh_13.html
zh/answers/,zh_answers.html
1 redirect_destination redirect_origin
2 credits/ credits.html
3 license/ license.html
4 nimi_pi_pu_ala/ nimi_pi_pu_ala.html
5 personal_style/ personal_style.html
6 lentan/art_revolution/ art_revolution.html
7 lentan/chess/ chess.html
8 lentan/city_names/ city_names.html
9 lentan/game_patches/ game_patches.html
10 lentan/game_patches_jp/ game_patches_jp.html
11 lentan/jan_lawa_pi_linja_ilo/ jan_lawa_pi_linja_ilo.html
12 lentan/keyboard/ keyboard.html
13 lentan/la_espero/ la_espero.html
14 lentan/nasin_juni/ nasin_juni.html
15 lentan/nasin_tenpo/ nasin_tenpo.html
16 lentan/o_lawa_e_sona_sina/ o_lawa_e_sona_sina.html
17 lentan/phonetic_alphabet/ phonetic_alphabet.html
18 lentan/riichi_mahjong/ riichi_mahjong.html
19 lentan/shogi/ shogi.html
20 lentan/sitelen_pona_ibus/ sitelen_pona_ibus.html
21 lentan/supalape/ supalape.html
22 de/ de_index.html
23 de/0/ de_0.html
24 de/1/ de_1.html
25 de/2/ de_2.html
26 de/3/ de_3.html
27 de/4/ de_4.html
28 de/5/ de_5.html
29 de/6/ de_6.html
30 de/7/ de_7.html
31 de/7a/ de_7a.html
32 de/8/ de_8.html
33 de/9/ de_9.html
34 de/10/ de_10.html
35 de/11/ de_11.html
36 de/12/ de_12.html
37 de/13/ de_13.html
38 de/x1/ de_x1.html
39 de/x2/ de_x2.html
40 de/answers/ de_answers.html
41 de/dictionary/ de_dictionary.html
42 de/sitelen_pona/ de_sitelen_pona.html
43 en/0/ 0.html
44 en/1/ 1.html
45 en/2/ 2.html
46 en/3/ 3.html
47 en/4/ 4.html
48 en/5/ 5.html
49 en/6/ 6.html
50 en/7/ 7.html
51 en/7a/ 7a.html
52 en/8/ 8.html
53 en/9/ 9.html
54 en/10/ 10.html
55 en/11/ 11.html
56 en/12/ 12.html
57 en/13/ 13.html
58 en/x1/ x1.htm
59 en/x2/ x2.html
60 en/answers/ answers.html
61 en/dictionary/ dictionary.html
62 en/sitelen_pona/ sitelen_pona.html
63 eo/ eo_index.html
64 eo/0/ eo_0.html
65 eo/1/ eo_1.html
66 eo/2/ eo_2.html
67 eo/3/ eo_3.html
68 eo/4/ eo_4.html
69 eo/5/ eo_5.html
70 eo/6/ eo_6.html
71 eo/7/ eo_7.html
72 eo/7a/ eo_7a.html
73 eo/8/ eo_8.html
74 eo/9/ eo_9.html
75 eo/10/ eo_10.html
76 eo/11/ eo_11.html
77 eo/12/ eo_12.html
78 eo/13/ eo_13.html
79 eo/x1/ eo_x1.html
80 eo/x2/ eo_x2.html
81 eo/answers/ eo_answers.html
82 eo/dictionary/ eo_dictionary.html
83 eo/sitelen_pona/ eo_sitelen_pona.html
84 pl/ pl_index.html
85 pl/0/ pl_0.html
86 pl/1/ pl_1.html
87 pl/2/ pl_2.html
88 pl/3/ pl_3.html
89 pl/4/ pl_4.html
90 pl/5/ pl_5.html
91 pl/6/ pl_6.html
92 pl/7/ pl_7.html
93 pl/7a/ pl_7a.html
94 pl/8/ pl_8.html
95 pl/9/ pl_9.html
96 pl/10/ pl_10.html
97 pl/11/ pl_11.html
98 pl/12/ pl_12.html
99 pl/13/ pl_13.html
100 pl/x1/ pl_x1.html
101 pl/x2/ pl_x2.html
102 pl/answers/ pl_answers.html
103 pl/dictionary/ pl_dictionary.html
104 pl/sitelen_pona/ pl_sitelen_pona.html
105 pt/ pt_index.html
106 pt/0/ pt_0.html
107 pt/1/ pt_1.html
108 pt/2/ pt_2.html
109 pt/3/ pt_3.html
110 pt/4/ pt_4.html
111 pt/5/ pt_5.html
112 pt/6/ pt_6.html
113 pt/7/ pt_7.html
114 pt/7a/ pt_7a.html
115 pt/8/ pt_8.html
116 pt/9/ pt_9.html
117 pt/10/ pt_10.html
118 pt/11/ pt_11.html
119 pt/12/ pt_12.html
120 pt/13/ pt_13.html
121 pt/x1/ pt_x1.html
122 pt/x2/ pt_x2.html
123 pt/answers/ pt_answers.html
124 pt/credits/ pt_credits.html
125 pt/dictionary/ pt_dictionary.html
126 pt/personal_style/ pt_personal_style.html
127 pt/sitelen_pona/ pt_sitelen_pona.html
128 ru/ ru_index.html
129 ru/0/ ru_0.html
130 ru/1/ ru_1.html
131 ru/2/ ru_2.html
132 ru/3/ ru_3.html
133 ru/4/ ru_4.html
134 ru/5/ ru_5.html
135 ru/6/ ru_6.html
136 ru/7/ ru_7.html
137 ru/7a/ ru_7a.html
138 ru/8/ ru_8.html
139 ru/9/ ru_9.html
140 ru/10/ ru_10.html
141 ru/11/ ru_11.html
142 ru/12/ ru_12.html
143 ru/13/ ru_13.html
144 ru/13_tonsi/ ru_13_tonsi.html
145 ru/x1/ ru_x1.html
146 ru/x1_lgbt/ ru_x1_lgbt.html
147 ru/x2/ ru_x2.html
148 ru/answers/ ru_answers.html
149 ru/dictionary/ ru_dictionary.html
150 ru/sitelen_pona/ ru_sitelen_pona.html
151 zh/ zh_index.html
152 zh/0/ zh_0.html
153 zh/1/ zh_1.html
154 zh/2/ zh_2.html
155 zh/3/ zh_3.html
156 zh/4/ zh_4.html
157 zh/5/ zh_5.html
158 zh/6/ zh_6.html
159 zh/7/ zh_7.html
160 zh/7a/ zh_7a.html
161 zh/8/ zh_8.html
162 zh/9/ zh_9.html
163 zh/10/ zh_10.html
164 zh/11/ zh_11.html
165 zh/12/ zh_12.html
166 zh/13/ zh_13.html
167 zh/answers/ zh_answers.html