wok view 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 source
1 #!/bin/sh
2 # tramys - TRAnslate MY Slitaz. Server solution
3 # Tool for managing translation files for SliTaz GNU/Linux
4 # Aleksej Bobylev <al.bobylev@gmail.com>, 2014
6 # How to use: tramys.cgi?lang=$LANG
7 # Pass packages list in HTTP_USER_AGENT header
8 # (seems it have no restrictions for length and no encoded symbols ' ' and '+')
10 . /usr/bin/httpd_helper.sh
12 WORKING=$(mktemp -d)
13 DATADIR=/home/lexeii/Public/tramys
15 # prepare list for search
16 # original GNU gettext searches precisely in this order
17 locales_list() {
18 LL=$(echo $1 | sed 's|^\([^_.@]*\).*$|\1|')
19 CC=$(echo $1 | sed -n '/_/s|^[^_]*\(_[^.@]*\).*$|\1|p')
20 EE=$(echo $1 | sed -n '/./s|^[^\.]*\(\.[^@]*\).*$|\1|p')
21 VV=$(echo $1 | sed -n '/@/s|^[^@]*\(@.*\)$|\1|p')
22 ee=$(echo $EE | tr A-Z a-z | tr -cd a-z0-9); [ "$ee" ] && ee=.$ee
23 [ "x$EE" == "x$ee" ] && ee=''
25 [ "$CC" -a "$EE" -a "$VV" ] && echo -n "$LL$CC$EE$VV "
26 [ "$CC" -a "$ee" -a "$VV" ] && echo -n "$LL$CC$ee$VV "
27 [ "$CC" -a "$VV" ] && echo -n "$LL$CC$VV "
28 [ "$EE" -a "$VV" ] && echo -n "$LL$EE$VV "
29 [ "$ee" -a "$VV" ] && echo -n "$LL$ee$VV "
30 [ "$VV" ] && echo -n "$LL$VV "
31 [ "$CC" -a "$EE" ] && echo -n "$LL$CC$EE "
32 [ "$CC" -a "$ee" ] && echo -n "$LL$CC$ee "
33 [ "$CC" ] && echo -n "$LL$CC "
34 [ "$EE" ] && echo -n "$LL$EE "
35 [ "$ee" ] && echo -n "$LL$ee "
36 echo "$LL"
37 }
38 MY_LOCALES=$(locales_list $(GET lang))
40 # constants to use in lists
41 US="/usr/share"
42 LC="LC_MESSAGES"
43 PY="/usr/lib/python2.7/site-packages"
44 R="/usr/lib/R/library"
45 RT="$R/translations/%/$LC"
47 for P in $HTTP_USER_AGENT; do
49 for list_type in mo qm; do
50 IFS=$'\n'
51 for line in $(grep -e "^$P " $DATADIR/$list_type.list); do
52 locales=$(echo $line | cut -d' ' -f2)
53 names=$(echo $line | cut -d' ' -f3)
54 [ "x$names" == "x" ] && names=$P
55 pathes=$(echo $line | cut -d' ' -f4)
56 [ "x$pathes" == "x" ] && pathes="$US/locale/%/$LC"
58 IFS=' '
59 for locale in $MY_LOCALES; do
60 if $(echo " $locales " | grep -q " $locale "); then
62 for name in $names; do
63 for path in $pathes; do
64 eval "fullname=${path//%/$locale}/${name//%/$locale}.$list_type"
65 mkdir -p $WORKING$(dirname $fullname)
66 cp -pf /home/slitaz/cooking/chroot/home/slitaz/wok/$P/install$fullname \
67 $WORKING$fullname
68 done
69 done
70 break
71 fi
72 done
73 done
74 done
75 done
77 busybox tar -czf $WORKING.tgz -C $WORKING .
78 cat <<EOT
79 Content-Type: application/x-compressed-tar
80 Content-Length: $(stat -c %s $WORKING.tgz)
81 Content-Disposition: attachment; filename=tramys.tgz
83 EOT
84 cat $WORKING.tgz
86 rm -rf $WORKING
87 rm -f $WORKING.tgz