wok diff tramys-server/stuff/tramys.cgi @ rev 17081

Add: tramys-server and tramys-client (yesterday version for history).
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sun Aug 24 22:43:01 2014 +0300 (2014-08-24)
parents
children 24e0f312c73d
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/tramys-server/stuff/tramys.cgi	Sun Aug 24 22:43:01 2014 +0300
     1.3 @@ -0,0 +1,87 @@
     1.4 +#!/bin/sh
     1.5 +# tramys - TRAnslate MY Slitaz. Server solution
     1.6 +# Tool for managing translation files for SliTaz GNU/Linux
     1.7 +# Aleksej Bobylev <al.bobylev@gmail.com>, 2014
     1.8 +
     1.9 +# How to use: tramys.cgi?lang=$LANG
    1.10 +# Pass packages list in HTTP_USER_AGENT header
    1.11 +# (seems it have no restrictions for length and no encoded symbols ' ' and '+')
    1.12 +
    1.13 +. /usr/bin/httpd_helper.sh
    1.14 +
    1.15 +WORKING=$(mktemp -d)
    1.16 +DATADIR=/home/lexeii/Public/tramys
    1.17 +
    1.18 +# prepare list for search
    1.19 +# original GNU gettext searches precisely in this order
    1.20 +locales_list() {
    1.21 +	LL=$(echo $1 | sed 's|^\([^_.@]*\).*$|\1|')
    1.22 +	CC=$(echo $1 | sed -n '/_/s|^[^_]*\(_[^.@]*\).*$|\1|p')
    1.23 +	EE=$(echo $1 | sed -n '/./s|^[^\.]*\(\.[^@]*\).*$|\1|p')
    1.24 +	VV=$(echo $1 | sed -n '/@/s|^[^@]*\(@.*\)$|\1|p')
    1.25 +	ee=$(echo $EE | tr A-Z a-z | tr -cd a-z0-9); [ "$ee" ] && ee=.$ee
    1.26 +	[ "x$EE" == "x$ee" ] && ee=''
    1.27 +
    1.28 +	[ "$CC" -a "$EE" -a "$VV" ]	&& echo -n "$LL$CC$EE$VV "
    1.29 +	[ "$CC" -a "$ee" -a "$VV" ]	&& echo -n "$LL$CC$ee$VV "
    1.30 +	[ "$CC" -a "$VV" ]			&& echo -n "$LL$CC$VV "
    1.31 +	[ "$EE" -a "$VV" ]			&& echo -n "$LL$EE$VV "
    1.32 +	[ "$ee" -a "$VV" ]			&& echo -n "$LL$ee$VV "
    1.33 +	[ "$VV" ]					&& echo -n "$LL$VV "
    1.34 +	[ "$CC" -a "$EE" ]			&& echo -n "$LL$CC$EE "
    1.35 +	[ "$CC" -a "$ee" ]			&& echo -n "$LL$CC$ee "
    1.36 +	[ "$CC" ]					&& echo -n "$LL$CC "
    1.37 +	[ "$EE" ]					&& echo -n "$LL$EE "
    1.38 +	[ "$ee" ]					&& echo -n "$LL$ee "
    1.39 +	echo "$LL"
    1.40 +}
    1.41 +MY_LOCALES=$(locales_list $(GET lang))
    1.42 +
    1.43 +# constants to use in lists
    1.44 +US="/usr/share"
    1.45 +LC="LC_MESSAGES"
    1.46 +PY="/usr/lib/python2.7/site-packages"
    1.47 +R="/usr/lib/R/library"
    1.48 +RT="$R/translations/%/$LC"
    1.49 +
    1.50 +for P in $HTTP_USER_AGENT; do
    1.51 +
    1.52 +	for list_type in mo qm; do
    1.53 +		IFS=$'\n'
    1.54 +		for line in $(grep -e "^$P	" $DATADIR/$list_type.list); do
    1.55 +			locales=$(echo $line | cut -d'	' -f2)
    1.56 +			names=$(echo $line | cut -d'	' -f3)
    1.57 +				[ "x$names" == "x" ] && names=$P
    1.58 +			pathes=$(echo $line | cut -d'	' -f4)
    1.59 +				[ "x$pathes" == "x" ] && pathes="$US/locale/%/$LC"
    1.60 +
    1.61 +			IFS=' '
    1.62 +			for locale in $MY_LOCALES; do
    1.63 +				if $(echo " $locales " | grep -q " $locale "); then
    1.64 +
    1.65 +					for name in $names; do
    1.66 +						for path in $pathes; do
    1.67 +							eval "fullname=${path//%/$locale}/${name//%/$locale}.$list_type"
    1.68 +							mkdir -p $WORKING$(dirname $fullname)
    1.69 +							cp -pf /home/slitaz/cooking/chroot/home/slitaz/wok/$P/install$fullname \
    1.70 +								$WORKING$fullname
    1.71 +						done
    1.72 +					done
    1.73 +					break
    1.74 +				fi
    1.75 +			done
    1.76 +		done
    1.77 +	done
    1.78 +done
    1.79 +
    1.80 +busybox tar -czf $WORKING.tgz -C $WORKING .
    1.81 +cat <<EOT
    1.82 +Content-Type: application/x-compressed-tar
    1.83 +Content-Length: $(stat -c %s $WORKING.tgz)
    1.84 +Content-Disposition: attachment; filename=tramys.tgz
    1.85 +
    1.86 +EOT
    1.87 +cat $WORKING.tgz
    1.88 +
    1.89 +rm -rf $WORKING
    1.90 +rm -f $WORKING.tgz