diff options
Diffstat (limited to 'libre/icecat-l10n/updatelanglist.sh')
-rw-r--r-- | libre/icecat-l10n/updatelanglist.sh | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/libre/icecat-l10n/updatelanglist.sh b/libre/icecat-l10n/updatelanglist.sh new file mode 100644 index 000000000..ddf78e392 --- /dev/null +++ b/libre/icecat-l10n/updatelanglist.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# helper script to check the local language list against upstream + +export CARCH="${CARCH:-$(uname -m)}" + +# extract pkgbase from pkgbuild +pkgbase="$(bash -c "source PKGBUILD && echo \"\$_pkgbase\"")" +pkgver="$(bash -c "source PKGBUILD && echo \"\$pkgver\"")" + +echo "attempting update to language lists for $pkgbase" +echo " CARCH: $CARCH" + +# produce new language list +url="$(bash -c "source PKGBUILD && echo \"\$_src_url\"")/" + +echo "_languages=(" > "languages.$CARCH.pkgnew" +echo "_sha512sums=(" > "sha512sums.$CARCH.pkgnew" + +mkdir -p src + +for lang in $(curl -sL "$url" | grep '\.xpi"' | cut -d'"' -f8 | rev | cut -d'/' -f1 | cut -d'.' -f3 | rev | sort); do + # filter unwanted packs + case "$lang" in + compare-locales|ja-JP-mac) continue ;; + esac + printf "\r %-3s..." "${lang%%-*}" + curl -s -o src/"$lang.xpi" "${url%/}/icecat-${pkgver%_*}.$lang.langpack.xpi" + sha512sum="$(sha512sum "src/$lang.xpi" | cut -d' ' -f1)" + name="$(unzip -p "src/$lang.xpi" manifest.json | grep " \"name" | cut -d':' -f2- | cut -d'"' -f2)" + + printf " '%-5s \"%s\"'\n" "$lang" "$name" \ + >> "languages.$CARCH.pkgnew" + printf " '%s'\n" "$sha512sum" \ + >> "sha512sums.$CARCH.pkgnew" +done +echo + +echo ")" >> "languages.$CARCH.pkgnew" +echo ")" >> "sha512sums.$CARCH.pkgnew" + +admsq() { + if cmp "$1"{,.pkgnew} > /dev/null; then + echo "$1 unchanged" + rm -f "$1.pkgnew" + else + diff -rupN "$1"{,.pkgnew} + while true; do + read -n1 -p "[a]pply, [d]elete, [m]erge, [s]kip, [q]uit " x + echo + case $x in + a) mv "$1"{.pkgnew,} + break + ;; + d) rm -f "$1".pkgnew + break + ;; + m) vimdiff "$1"{,.pkgnew} + rm "$1".pkgnew + break + ;; + s) break + ;; + q) exit + ;; + *) ;; + esac + done + fi +} + +# compare and update +admsq "languages.$CARCH" +admsq "sha512sums.$CARCH" + +# update PKGBUILD checksums +_languages_shasum="$(sha512sum "languages.$CARCH" | cut -d' ' -f1)" +_sha512sums_shasum="$(sha512sum "sha512sums.$CARCH" | cut -d' ' -f1)" +sed -e "s/^_languages_${CARCH}_shasum=.*/_languages_${CARCH}_shasum=\"${_languages_shasum}\"/" \ + -e "s/^_sha512sums_${CARCH}_shasum=.*/_sha512sums_${CARCH}_shasum=\"${_sha512sums_shasum}\"/" \ + PKGBUILD > PKGBUILD.pkgnew + +admsq "PKGBUILD" |