aboutsummaryrefslogtreecommitdiffstats
path: root/crowdin/download
blob: 7465ad3973c13ca65bfd8aed2f7187b32b934b45 (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
. "`dirname $0`/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