blob: b6bbe40ed5ec23649290c86d9d4364d7557cc6cc (
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
|
#!/bin/bash
#
#
# This script downloads all translations from crowdin,
# and make a pull request on github if necessary
#
#
# see: http://crowdin.net/page/api/export
# see: http://crowdin.net/page/api/download
. "$(dirname $0)/globals"
BRANCH=crowdin_translations
GITHUB_PR_TITLE="crowdin: New translations"
PR_EXISTS=0
DDATE=$(date +"%Y-%m-%d %H:%M:%S")
ZIPFILE=all.zip
# default base branch
BASE_BRANCH=master
finish () {
debug "cleaning up"
# revert everything until last commit
_do git branch | grep -q "\* ${BRANCH}" && ( _do git checkout . ; _do git reset ; )
_do git checkout ${BASE_BRANCH} || exit 1
[[ -f ${ZIPFILE} ]] && _do rm "${ZIPFILE}"
}
# check if different base branch has been set
if [ $# -eq 1 ]; then
debug "Setting BASE_BRANCH to $1"
BASE_BRANCH=$1
fi
# update BASE_BRANCH
_do git pull upstream ${BASE_BRANCH} || die "couldn't git pull upstream ${BASE_BRANCH}."
# check for existing PR
_do curl -i --get "https://api.github.com/repos/cgeo/cgeo/pulls" -o "${OUT}" \
|| die "listing pull requests failed."
grep -q "Status: 200 OK" "${OUT}" || ( cat "${OUT}" ; die "reading list of pull requests failed." ; )
grep -qF "${GITHUB_PR_TITLE}" "${OUT}" && PR_EXISTS=1
if [ $PR_EXISTS -eq 0 ]; then
debug "We don't have an open Pull Request on github."
# remove branch if exists
_do git checkout ${BASE_BRANCH} || die "Couldn't git checkout ${BASE_BRANCH}."
_do git branch -D "${BRANCH}"
else
debug "We have an open Pull Request on github."
fi
# prepare branch
if git branch | grep -q "${BRANCH}"; then
:
else
_do git branch "${BRANCH}" || die "Couldn't create branch."
fi
_do git checkout "${BRANCH}" || die "Couldn't switch to branch."
# package the language files (allowed every 30 min)
debug "packaging language files."
crowdin_surf "http://api.crowdin.net/api/project/cgeo/export?key=${CROWDIN_APIKEY}"
# download and unpack translations
[[ -f ${ZIPFILE} ]] && rm ${ZIPFILE}
_do wget "http://api.crowdin.net/api/project/cgeo/download/all.zip?key=${CROWDIN_APIKEY}" -O ${ZIPFILE} \
|| die "crowdin download failed."
_do unzip -o ${ZIPFILE} || die "unzip of ${ZIPFILE} failed."
# fix unicode entities for ellipsis character
for f in */*/*values-*/strings.xml; do
sed -i 's/…/…/g' $f
done
# apply local patches to particular strings
. "$progdir/local-patches"
# check for changes
if [ -z "$(git diff)" ]; then
debug "no changes, finishing."
finish
exit
fi
# upload changes to github
AMEND=""
[[ ! -z "$(git log ${BASE_BRANCH}..${BRANCH})" ]] && AMEND="--amend"
_do git commit -a "${AMEND}" -m \"${GITHUB_PR_TITLE}\" || die "commit failed."
_do git push -f origin "${BRANCH}" || die "git push failed."
# create pull request
if [ $PR_EXISTS -eq 0 ]; then
_do curl -i -u "${GITHUB_USER}:${GITHUB_PASSWORD}" -d \'{\"title\":\"${GITHUB_PR_TITLE}\",\"body\":\"downloaded ${DDATE}\",\"head\":\"${GITHUB_USER}:${BRANCH}\",\"base\":\"${BASE_BRANCH}\"}\' "https://api.github.com/repos/cgeo/cgeo/pulls" -o "${OUT}" || die "creating the pull request failed."
grep -q "201 Created" "${OUT}" || die "pull request not created."
fi
# clean up
# [[ -f "${OUT}" ]] && rm "${OUT}"
finish
|