#!/bin/bash # usage: $0 dir [-u xyz-uvw|-ua|-uaf] 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-bin]=\ '# Contributor: akane '$'\n' contrs[eng-deu-bin]=\ '# Contributor: akane '$'\n' contrs[fra-eng-bin]=\ '# Contributor: Benjamin Vanderford '$'\n' contrs[eng-fra-bin]=\ '# Contributor: Benjamin Vanderford '$'\n' typeset -A prepare prepare[deu-fra]=\ 'prepare() { cd $_lang sed -i '"'"'s/\(10\)\(100\>.*1 mit 100 Nullen\)/\1\^\2/'"'"' ${_lang}.tei } ' prepare[deu-fra-bin]=\ 'prepare() { cd $_lang dictzip -d ${_lang}.dict.dz sed -i '"'"'s/\(10\)\(100\>.*1 mit 100 Nullen\)/\1\^\2/'"'"' ${_lang}.dict dictzip ${_lang}.dict } ' . basic.sh function main { [ "$#" -gt 0 ] && cd "$1" || exit 1 shift curl -sO http://freedict.org/freedict-database.json init handle_all src '' src "$@" handle_all bin -bin dictd "$@" } function update { echo "Updating ${lang}${ext} (${pkgver} -> ${convver})..." lang_a="${long[${lang%-*}]}" lang_b="${long[${lang#*-}]}" checksum="$(wget -qO - "$url" | sha512sum | sed -E 's/\s*-$//')" cp ../sample.PKGBUILD "$tmp" replace '%LANG%' "$lang" replace '%LANG_A%' "$lang_a" replace '%LANG_B%' "$lang_b" replace '%VER%' "$convver" replace '%CHECKSUM%' "$checksum" replace_line '%CONTRS%' "${contrs[${lang}${ext}]}" normal if [[ "$ver" == "$convver" ]] then delete_line '^_pkgver=\${pkgver\/\/_\/-}$' replace '_pkgver' 'pkgver' fi replace_line '%PREPARE%' "${prepare[${lang}${ext}]}" rm-plus-one mv "$tmp" PKGBUILD makepkg --printsrcinfo > .SRCINFO } # $1 type: (src|bin) # $2 suffix: (|-bin) # $3 platform: (src|dictd) # ${@:4} args: $@ function handle_all { type="$1" ext="$2" platform="$3" shift 3 cd "$type" for lang in ${langs[@]} do cd dict-freedict-${lang}${ext} 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==\"$platform\") | .version" ../../freedict-database.json)" url="$(jq -r ".[] | select(.name == \"${lang}\") | .releases[] | select(.platform==\"$platform\") | .URL" ../../freedict-database.json)" url="${url%/download}" convver="${ver//-/_}" if [[ "$pkgver" != "$convver" ]] then echo "${lang}${ext} requires update (${pkgver} -> ${convver})." ureq=true else ureq=false fi if [[ "$url" != "https://sourceforge.net/projects/freedict/files/${lang}/${ver}/freedict-${lang}-${ver}.${platform}.tar.xz" ]] then echo "${lang}${ext} URL changed (${url})." else if [[ "$1" == "-u" && "$2" == "$lang${ext}" ]] \ || ([[ "$1" == "-ua" ]] && $ureq) \ || [[ "$1" == "-uaf" ]] then update fi fi cd .. done cd .. } main "$@"