/usr/bin/hfst-foma-wrapper.sh is in hfst 3.9.0~r4595-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | #!/bin/bash
#foma_exec=@FOMACLI@
foma_exec=/usr/bin/hfst_foma
if [ ! -x $foma_exec ] ; then
echo "$0 could not find executable foma from $foma_exec"
exit 1
fi
function print_usage() {
echo "Usage: $0 [-h|-V] [-v|-s|-q] [-f FORMAT] [-F STACK_FILES] [SCRIPTS]"
}
function print_help() {
echo "Uses foma to parse xfst scripts converts results to HFST3 format"
echo
echo " -h print this help text"
echo " -V print script version"
echo " -v print verbosely while processing"
echo " -q do not print while processing"
echo " -s alias of -q"
echo " -f select output format as HFST3 supported format names"
echo " -F list files which xfst script saves as stacks that can be converted to HFST3 format"
echo " -X pass option string to foma verbatim"
echo
echo "if SCRIPTS and input parameters from X are missing, stdin is used."
echo "Output is written to stdout."
echo "If -f is omitted, HFST3 default is used"
echo "If -F is omitted, we try to guess files to convert automatically"
}
function print_version() {
echo "hfst-foma-wrapper 0.1"
echo "Copyright (c) 2010 University of Helsinki"
echo "Licence GPLv3: GNU GPL version 3 <http://gnu.org/licenses/gpl.html>"
echo "This is free software: you are free to change and redistribute it."
echo "There is NO WARRANTY, to the extent permitted by law."
}
while getopts "vqshVf:F:X:" flag ; do
case $flag in
h) print_help; exit 0;;
V) print_version; exit 0;;
v) verbose="-v";;
s|q) quiet="-q";;
f) format="-f $OPTARG";;
F) files="$OPTARG";;
X) fomaopts="$OPTARG";;
\?) echo "Unknown command line switch $OPTARG, try -h for help"; print_usage; exit 1;;
esac
done
hfstopts="$quiet $verbose $format"
if [ x$verbose != x-v -a x$quiet != x-q ] ; then
fomaopts="$fomaopts -p"
hfstopts=-v
fi
shift $(($OPTIND-1))
if [ -z $@ ] ; then
if [ "x$verbose" == "x-v" ] ; then
echo "running $foma_exec $fomaopts"
fi
if ! $foma_exec $fomaopts; then
echo "$foma_exec failed"
exit 1
fi
fi
for f in $@ ; do
if [ "x$verbose" == "x-v" ] ; then
echo "running $foma_exec $fomaopts -f $f"
fi
if ! $foma_exec $fomaopts -f "$f" ; then
echo "$foma_exec -f $f failed"
exit 1
fi
done
if [ -z $files ] ; then
scripts="$(echo $fomaopts | sed 's/ -f //') $scripts"
for f in $@ $scripts; do
if test -f ./"$f" ; then
if egrep -q '^(save stack|ss)' ./"$f" ; then
files="$(egrep '^(save stack|ss)' < "$f" | sed -e 's/^save stack //' -e 's/^ss //') $files"
fi
fi
done
files=$(echo $files | tr -s ' ' '\n' | sort | uniq)
if [ "x$verbose" == "x-v" ] ; then
echo "discovered stack files: $files"
fi
fi
if [ -z "$files" ] ; then
echo "Unable to find saved stack files to convert..."
echo "HFST-xfst can only use -f scripts with save stack command or"
echo "-l scripts with save stack before interactive part"
exit 1
fi
for f in $files ; do
if test -f "$f" ; then
if [ "x$verbose" == "x-v" ] ; then
echo "converting $f"
fi
printf "load stack $f\nwatt $f.att\nquit" > $f.tmpscript
if ! $foma_exec -q -f $f.tmpscript ; then
echo "converting $f from foma to text failed"
exit 1
fi
sed -e 's/ / @_TAB_@/g' -e 's/ / @_SPACE_@/g' < "$f".att > "$f".att2
mv "$f".att2 "$f".att
if ! hfst-txt2fst -e '@0@' $verbose $hfstopts $format -i "$f.att" -o "$f" ; then
echo "converting $f from text to HFST3 failed"
exit 1
fi
rm $f.tmpscript $f.att
fi
done
# vim: set ft=bash
|