forked from Liquipedia/Lua-Modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
109 lines (100 loc) · 2.75 KB
/
deploy.sh
File metadata and controls
109 lines (100 loc) · 2.75 KB
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
#!/bin/bash
userAgent="GitHub Autodeploy Bot/1.0.0 (${LP_UA_EMAIL})"
wikiBaseUrl='https://liquipedia.net/'
luaFiles=$(find . -type f -name '*.lua')
pat='\-\-\-\
\-\- @Liquipedia\
\-\- wiki=([^
]*)\
\-\- page=([^
]*)\
'
gitCommitSubject=$(git log -1 --pretty='%h %s')
declare -A loggedin
for luaFile in $luaFiles
do
echo "== Checking $luaFile =="
fileContents=$(cat "$luaFile")
[[ $fileContents =~ $pat ]]
if [[ "${BASH_REMATCH[1]}" == "" ]]
then
echo '...skipping - no magic comment found'
else
echo '...magic comment found - updating wiki...'
wiki="${BASH_REMATCH[1]}"
page="${BASH_REMATCH[2]}"
echo "...wiki = $wiki"
echo "...page = $page"
wikiApiUrl="${wikiBaseUrl}${wiki}/api.php"
ckf="cookie_${wiki}.ck"
if [[ ${loggedin[${wiki}]} != 1 ]]
then
# Login
echo "...logging in on \"${wiki}\""
loginToken=$(
curl \
-s \
-b "$ckf" \
-c "$ckf" \
-d "format=json&action=query&meta=tokens&type=login" \
-H "User-Agent: ${userAgent}" \
-H 'Accept-Encoding: gzip' \
-X POST "$wikiApiUrl" \
| gunzip \
| jq ".query.tokens.logintoken" -r
)
curl \
-s \
-b "$ckf" \
-c "$ckf" \
--data-urlencode "username=${LP_USER}" \
--data-urlencode "password=${LP_PASSWORD}" \
--data-urlencode "logintoken=${loginToken}" \
--data-urlencode "loginreturnurl=https://liquipedia.net" \
-H "User-Agent: ${userAgent}" \
-H 'Accept-Encoding: gzip' \
-X POST "${wikiApiUrl}?format=json&action=clientlogin" \
| gunzip \
> /dev/null
loggedin[$wiki]=1
# Don't get rate limited
sleep 4
fi
# Edit page
editToken=$(
curl \
-s \
-b "$ckf" \
-c "$ckf" \
-d "format=json&action=query&meta=tokens" \
-H "User-Agent: ${userAgent}" \
-H 'Accept-Encoding: gzip' \
-X POST "$wikiApiUrl" \
| gunzip \
| jq ".query.tokens.csrftoken" -r
)
rawResult=$(
curl \
-s \
-b "$ckf" \
-c "$ckf" \
--data-urlencode "title=${page}" \
--data-urlencode "text=${fileContents}" \
--data-urlencode "summary=Git: \"${gitCommitSubject}\"" \
--data-urlencode "bot=true" \
--data-urlencode "recreate=true" \
--data-urlencode "token=${editToken}" \
-H "User-Agent: ${userAgent}" \
-H 'Accept-Encoding: gzip' \
-X POST "${wikiApiUrl}?format=json&action=edit" \
| gunzip
)
result=$(echo "$rawResult" | jq ".edit.result" -r)
echo "DEBUG: ...${rawResult}"
echo "...${result}"
echo '...done'
# Don't get rate limited
sleep 4
fi
done
rm cookie_*