aboutsummaryrefslogtreecommitdiff
path: root/src/update.sh
blob: 50720e71eeb9aef782af54fb5ae4d9299340619a (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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/bash

if [ "$#" -ne 0 ]
then
	cd "$1" || exit 1
fi

typeset -a langs
langs=(
	fra-deu deu-fra
	deu-eng eng-deu
	fra-eng eng-fra
	spa-eng eng-spa
	)

typeset -A long
long[fra]=French
long[deu]=German
long[eng]=English
long[spa]=Spanish

typeset -A contrs
contrs[deu-eng]=\
'# Contributor: akane <grangerspit@gmail.com> <xmpp:heiß@neko.im>'$'\n'
contrs[eng-deu]=\
'# Contributor: akane <grangerspit@gmail.com> <xmpp:heiß@neko.im>'$'\n'
contrs[fra-eng]=\
'# Contributor: Benjamin Vanderford <hazor_at_swrpg_dot_info>'$'\n'
contrs[eng-fra]=\
'# Contributor: Benjamin Vanderford <hazor_at_swrpg_dot_info>'$'\n'

typeset -A prepare
prepare[deu-fra]=\
'prepare()
{
	cd $_lang
	sed -i '"'s/\(10\)\(100\>.*1 mit 100 Nullen\)/\1\^\2/'"' ${_lang}.tei
}
'


# $1: lang to update
function update
{
	echo "Updating $lang ($pkgver -> $convver)..."

	lang_a="${long[${lang%-*}]}"
	lang_b="${long[${lang#*-}]}"

	checksum="$(wget -qO - "$url" | sha512sum | sed -E 's/\s*-$//')"

	tmp="$(mktemp)"
	tmp_="$(mktemp)"

	sed -e "s/%LANG%/${lang}/" \
		-e "s/%LANG_A%/${lang_a}/; s/%LANG_B%/${lang_b}/" \
		-e "s/%VER%/${convver}/" \
		-e "s/%CHECKSUM%/${checksum}/" \
		< ../sample.PKGBUILD \
		> "$tmp"

	if test -n "${contrs[$lang]}"
	then
		cat <(sed '/%CONTRS%/,$ d' < "$tmp") \
			<(echo -n "${contrs[$lang]}") \
			<(sed '0,/%CONTRS%/ d' < "$tmp") \
			> "$tmp_"
	else
		sed '/%CONTRS%/ d' < "$tmp" > "$tmp_"
	fi

	if [[ "$ver" == "$convver" ]]
	then
		sed -i \
			-e '/^_pkgver=\${pkgver\/\/_\/-}$/ d' \
			-e 's/_pkgver/pkgver/g' \
			"$tmp_"
	fi

	if test -n "${prepare[$lang]}"
	then
		cat <(sed '/%PREPARE%/,$ d' < "$tmp_") \
			<(echo -n "${prepare[$lang]}") \
			<(sed '0,/%PREPARE%/ d' < "$tmp_") \
			> PKGBUILD
	else
		sed '/%PREPARE%/,+1 d' < "$tmp_" > PKGBUILD
	fi

	makepkg --printsrcinfo > .SRCINFO

	rm "$tmp" "$tmp_"
}


curl -sO http://freedict.org/freedict-database.json


for lang in ${langs[@]}
do
	cd dict-freedict-${lang}
	git pull -q
	pkgver="$(grep pkgver .SRCINFO | sed -E 's/\s*pkgver\s*=\s*(.+)\s*/\1/')"
	ver="$(jq -r ".[] | select(.name == \"${lang}\") | .releases[] | select(.platform==\"src\") | .version" ../freedict-database.json)"
	url="$(jq -r ".[] | select(.name == \"${lang}\") | .releases[] | select(.platform==\"src\") | .URL" ../freedict-database.json)"
	url="${url%/download}"
	convver="${ver//-/_}"

	if [[ "$pkgver" != "$convver" ]]
	then
		echo "$lang requires update ($pkgver -> $convver)."
		urq=true
	else
		urq=false
	fi

	if [[ "$url" != "https://sourceforge.net/projects/freedict/files/${lang}/${ver}/freedict-${lang}-${ver}.src.tar.xz" ]]
	then
		echo "$lang URL changed ($url)."
	else
		if [[ "$1" == "-u" && "$2" == "$lang" ]] || ([[ "$1" == "-ua" ]] && $urq)
		then
			update "$2"
		fi
	fi

	cd ..
done