aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/make_install.sh15
-rw-r--r--src/sample.PKGBUILD38
-rw-r--r--src/sample.install78
-rwxr-xr-xsrc/update.sh128
4 files changed, 259 insertions, 0 deletions
diff --git a/src/make_install.sh b/src/make_install.sh
new file mode 100755
index 0000000..a24837f
--- /dev/null
+++ b/src/make_install.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [ "$#" -lt 1 ]
+then
+ echo "Usage: $0 xy-zw [base_dir]" >&2
+ exit 1
+elif [ "$#" -gt 1 ]
+then
+ cd "$2" || exit 1
+fi
+
+lang=$1
+pkgname=dict-freedict-${lang}
+
+sed "s/%LANG%/${lang}/g" sample.install > ${pkgname}/${pkgname}.install
diff --git a/src/sample.PKGBUILD b/src/sample.PKGBUILD
new file mode 100644
index 0000000..7aaa338
--- /dev/null
+++ b/src/sample.PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Einhard Leichtfuß <alguien@respiranto.de>
+%CONTRS%
+_lang=%LANG%
+pkgname=dict-freedict-${_lang}
+pkgver=%VER%
+_pkgver=${pkgver//_/-}
+pkgrel=1
+pkgdesc="%LANG_A% -> %LANG_B% dictionary for dictd et al. from Freedict.org"
+arch=('any')
+url="http://www.freedict.org/"
+license=('GPL')
+optdepends=('dictd: dict client and server')
+makedepends=('dictd' 'freedict-tools')
+install=${pkgname}.install
+source=("https://sourceforge.net/projects/freedict/files/${_lang}/${_pkgver}/freedict-${_lang}-${_pkgver}.src.tar.xz")
+sha512sums=('%CHECKSUM%')
+
+%PREPARE%
+
+build()
+{
+ cd $_lang
+ make FREEDICT_TOOLS=/usr/lib/freedict-tools build-dictd
+}
+
+package()
+{
+ mkdir -p "${pkgdir}/usr/share/dictd"
+ cp ${_lang}/build/dictd/${_lang}.{dict.dz,index} \
+ "${pkgdir}/usr/share/dictd/"
+
+ mkdir -p "${pkgdir}/usr/share/doc/freedict/${_lang}"
+ for file in ${_lang}/{AUTHORS,README,NEWS,ChangeLog}
+ do
+ test -f ${file} && \
+ cp ${file} "${pkgdir}/usr/share/doc/freedict/${_lang}/"
+ done
+}
diff --git a/src/sample.install b/src/sample.install
new file mode 100644
index 0000000..882fbf5
--- /dev/null
+++ b/src/sample.install
@@ -0,0 +1,78 @@
+basename=%LANG%
+pkgname=dict-freedict-$basename
+dictd_conf=/etc/dict/dictd.conf
+datadir=/usr/share/dictd
+conf="database $basename {
+ data $datadir/$basename.dict.dz
+ index $datadir/$basename.index
+}"
+
+post_install()
+{
+ echo
+ if pacman -Qq dictd > /dev/null 2>&1
+ then
+ if grep -q "^database *$basename" "$dictd_conf"
+ then
+ echo "$pkgname already configured in $dictd_conf"
+ else
+ echo "Adding configuration for $pkgname to $dictd_conf"
+ echo "$conf" >> "$dictd_conf"
+ fi
+
+ if systemctl -q is-active dictd.service
+ then
+ echo "Restarting dictd service in order to" \
+ "use the new dictionary database"
+ systemctl restart dictd.service
+ else
+ echo "Starting dictd service in order to" \
+ "use the new dictionary database"
+ systemctl start dictd.service
+ fi
+ else
+ echo "dictd does not appear to be installed."
+ echo "In order to use this database you should either" \
+ "install dictd or alternatively" \
+ "another dict server and configure it on your own."
+ fi
+ echo
+}
+
+post_upgrade()
+{
+ if pacman -Qq dictd > /dev/null 2>&1 && \
+ systemctl -q is-active dictd.service
+ then
+ echo -e "\nRestarting dictd service in order to" \
+ "use the updated dictionary database"
+ systemctl restart dictd.service
+ fi
+}
+
+post_remove()
+{
+ if pacman -Qq dictd > /dev/null 2>&1
+ then
+ current_conf="$(grep -A 3 "^database *$basename" "$dictd_conf")"
+ if test -n "$current_conf"
+ then
+ echo
+ if test "$current_conf" = "$conf"
+ then
+ echo "Removing configuration for $pkgname from $dictd_conf"
+ sed -i "/database $basename {/,/}/d" "$dictd_conf"
+ else
+ echo "User created / modified configuration" \
+ "for $pkgname in $dictd_conf is left untouched."
+ fi
+ fi
+
+ if systemctl -q is-active dictd.service
+ then
+ echo "Restarting dictd service in order to" \
+ "stop using the removed dictionary database"
+ systemctl restart dictd.service
+ fi
+ fi
+}
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