aboutsummaryrefslogtreecommitdiff
path: root/src/update.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/update.sh')
-rwxr-xr-xsrc/update.sh128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/update.sh b/src/update.sh
new file mode 100755
index 0000000..50720e7
--- /dev/null
+++ b/src/update.sh
@@ -0,0 +1,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