summaryrefslogtreecommitdiff
path: root/contrib/tsearch2/gendict/config.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tsearch2/gendict/config.sh')
-rwxr-xr-xcontrib/tsearch2/gendict/config.sh183
1 files changed, 183 insertions, 0 deletions
diff --git a/contrib/tsearch2/gendict/config.sh b/contrib/tsearch2/gendict/config.sh
new file mode 100755
index 0000000000..26bb5421f7
--- /dev/null
+++ b/contrib/tsearch2/gendict/config.sh
@@ -0,0 +1,183 @@
+#!/bin/sh
+
+usage () {
+ echo Usage:
+ echo $0 -n DICTNAME \( [ -s [ -p PREFIX ] ] \| [ -c CFILES ] [ -h HFILES ] [ -i ] \) [ -v ] [ -d DIR ] [ -C COMMENT ]
+ echo ' -v - be verbose'
+ echo ' -d DIR - name of directory in PGSQL_SRL/contrib (default dict_DICTNAME)'
+ echo ' -C COMMENT - dictionary comment'
+ echo Generate Snowball stemmer:
+ echo $0 -n DICTNAME -s [ -p PREFIX ] [ -v ] [ -d DIR ] [ -C COMMENT ]
+ echo ' -s - generate Snowball wrapper'
+ echo " -p - prefix of Snowball's function, (default DICTNAME)"
+ echo Generate template dictionary:
+ echo $0 -n DICTNAME [ -c CFILES ] [ -h HFILES ] [ -i ] [ -v ] [ -d DIR ] [ -C COMMENT ]
+ echo ' -c CFILES - source files, must be placed in contrib/tsearch2/gendict directory.'
+ echo ' These files will be used in Makefile.'
+ echo ' -h HFILES - header files, must be placed in contrib/tsearch2/gendict directory.'
+ echo ' These files will be used in Makefile and subinclude.h'
+ echo ' -i - dictionary has init method'
+ exit 1;
+}
+
+dictname=
+stemmode=no
+verbose=no
+cfile=
+hfile=
+dir=
+hasinit=no
+comment=
+prefix=
+
+while getopts n:c:C:h:d:p:vis opt
+do
+ case "$opt" in
+ v) verbose=yes;;
+ s) stemmode=yes;;
+ i) hasinit=yes;;
+ n) dictname="$OPTARG";;
+ c) cfile="$OPTARG";;
+ h) hfile="$OPTARG";;
+ d) dir="$OPTARG";;
+ C) comment="$OPTARG";;
+ p) prefix="$OPTARG";;
+ \?) usage;;
+ esac
+done
+
+[ ${#dictname} -eq 0 ] && usage
+
+dictname=`echo $dictname | tr '[:upper:]' '[:lower:]'`
+
+if [ $stemmode = "yes" ] ; then
+ [ ${#prefix} -eq 0 ] && prefix=$dictname
+ hasinit=yes
+ cfile="stem.c"
+ hfile="stem.h"
+fi
+
+[ ${#dir} -eq 0 ] && dir="dict_$dictname"
+
+if [ ${#comment} -eq 0 ]; then
+ comment=null
+else
+ comment="'$comment'"
+fi
+
+ofile=
+for f in $cfile
+do
+ f=` echo $f | sed 's#c$#o#'`
+ ofile="$ofile $f"
+done
+
+if [ $stemmode = "yes" ] ; then
+ ofile="$ofile dict_snowball.o"
+else
+ ofile="$ofile dict_tmpl.o"
+fi
+
+if [ $verbose = "yes" ]; then
+ echo Dictname: "'"$dictname"'"
+ echo Snowball stemmer: $stemmode
+ echo Has init method: $hasinit
+ [ $stemmode = "yes" ] && echo Function prefix: $prefix
+ echo Source files: $cfile
+ echo Header files: $hfile
+ echo Object files: $ofile
+ echo Comment: $comment
+ echo Directory: ../../$dir
+fi
+
+
+[ $verbose = "yes" ] && echo -n 'Build directory... '
+if [ ! -d ../../$dir ]; then
+ if ! mkdir ../../$dir ; then
+ echo "Can't create directory ../../$dir"
+ exit 1
+ fi
+fi
+[ $verbose = "yes" ] && echo ok
+
+
+[ $verbose = "yes" ] && echo -n 'Build Makefile... '
+sed s#CFG_DIR#$dir# < Makefile.IN | sed s#CFG_MODNAME#$dictname# | sed "s#CFG_OFILE#$ofile#" > ../../$dir/Makefile.tmp
+if [ $stemmode = "yes" ] ; then
+ sed "s#^PG_CPPFLAGS.*\$#PG_CPPFLAGS = -I../tsearch2/snowball -I../tsearch2#" < ../../$dir/Makefile.tmp > ../../$dir/Makefile
+else
+ sed "s#^PG_CPPFLAGS.*\$#PG_CPPFLAGS = -I../tsearch2#" < ../../$dir/Makefile.tmp > ../../$dir/Makefile
+fi
+rm ../../$dir/Makefile.tmp
+[ $verbose = "yes" ] && echo ok
+
+
+[ $verbose = "yes" ] && echo -n Build dict_$dictname'.sql.in... '
+if [ $hasinit = "yes" ]; then
+ sed s#CFG_MODNAME#$dictname# < sql.IN | sed "s#CFG_COMMENT#$comment#" | sed s#^HASINIT## | sed 's#^NOINIT.*$##' > ../../$dir/dict_$dictname.sql.in.tmp
+ if [ $stemmode = "yes" ] ; then
+ sed s#^ISSNOWBALL## < ../../$dir/dict_$dictname.sql.in.tmp | sed s#^NOSNOWBALL.*\$## > ../../$dir/dict_$dictname.sql.in
+ else
+ sed s#^NOSNOWBALL## < ../../$dir/dict_$dictname.sql.in.tmp | sed s#^ISSNOWBALL.*\$## > ../../$dir/dict_$dictname.sql.in
+ fi
+ rm ../../$dir/dict_$dictname.sql.in.tmp
+else
+ sed s#CFG_MODNAME#$dictname# < sql.IN | sed "s#CFG_COMMENT#$comment#" | sed s#^NOINIT## | sed 's#^HASINIT.*$##' | sed s#^NOSNOWBALL## | sed s#^ISSNOWBALL.*\$## > ../../$dir/dict_$dictname.sql.in
+fi
+[ $verbose = "yes" ] && echo ok
+
+
+
+if [ ${#cfile} -ne 0 ] || [ ${#hfile} -ne 0 ] ; then
+ [ $verbose = "yes" ] && echo -n 'Copy source and header files... '
+ if [ ${#cfile} -ne 0 ] ; then
+ if ! cp $cfile ../../$dir ; then
+ echo "Cant cp all or one of files: $cfile"
+ exit 1
+ fi
+ fi
+ if [ ${#hfile} -ne 0 ] ; then
+ if ! cp $hfile ../../$dir ; then
+ echo "Cant cp all or one of files: $hfile"
+ exit 1
+ fi
+ fi
+ [ $verbose = "yes" ] && echo ok
+fi
+
+
+[ $verbose = "yes" ] && echo -n 'Build sub-include header... '
+echo -n > ../../$dir/subinclude.h
+for i in $hfile
+do
+ echo "#include \"$i\"" >> ../../$dir/subinclude.h
+done
+[ $verbose = "yes" ] && echo ok
+
+
+if [ $stemmode = "yes" ] ; then
+ [ $verbose = "yes" ] && echo -n 'Build Snowball stemmer... '
+ sed s#CFG_MODNAME#$dictname#g < dict_snowball.c.IN | sed s#CFG_PREFIX#$prefix#g > ../../$dir/dict_snowball.c
+else
+ [ $verbose = "yes" ] && echo -n 'Build dictinonary... '
+ sed s#CFG_MODNAME#$dictname#g < dict_tmpl.c.IN > ../../$dir/dict_tmpl.c.tmp
+ if [ $hasinit = "yes" ]; then
+ sed s#^HASINIT## < ../../$dir/dict_tmpl.c.tmp | sed 's#^NOINIT.*$##' > ../../$dir/dict_tmpl.c
+ else
+ sed s#^HASINIT.*\$## < ../../$dir/dict_tmpl.c.tmp | sed 's#^NOINIT##' > ../../$dir/dict_tmpl.c
+ fi
+ rm ../../$dir/dict_tmpl.c.tmp
+fi
+[ $verbose = "yes" ] && echo ok
+
+
+[ $verbose = "yes" ] && echo -n "Build README.$dictname... "
+if [ $stemmode = "yes" ] ; then
+ echo "Autogenerated Snowball's wrapper for $prefix" > ../../$dir/README.$dictname
+else
+ echo "Autogenerated template for $dictname" > ../../$dir/README.$dictname
+fi
+[ $verbose = "yes" ] && echo ok
+
+echo All is done
+