# Aap recipe for Thai Vim spell files.

# Use a freshly compiled Vim if it exists.
@if os.path.exists('../../../src/vim'):
    VIM = ../../../src/vim
@else:
    :progsearch VIM vim

SPELLDIR = ..
FILES    = th.aff th.dic

all: $SPELLDIR/th.utf-8.spl ../README_th.txt

$SPELLDIR/th.utf-8.spl : $FILES
        :sys $VIM -u NONE -e -c "set enc=utf-8"
                -c "mkspell! $SPELLDIR/th th" -c q

../README_th.txt: README_th.txt
        :copy $source $target

#
# Fetching the files from http://sesrc.th.net
#
HTTPDIR = http://seasrc.th.net/dict
ZIPNAME = th_18057.zip
FNAME = TH_18057.TXT

:attr {fetch = $HTTPDIR/%file%} $ZIPNAME

# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
# This is a bit tricky, since the file name includes the date.
#
# We get a plain list of Thai words and make the .dic file from that.  The .aff
# file is made from scratch.
th.aff th.dic: {buildcheck=}
        :assertpkg unzip iconv
        :fetch $ZIPNAME
        :sys unzip $ZIPNAME
        :sys {force} iconv -c -f TIS-620 -t UTF-8 <$FNAME >th.dic
        :delete $ZIPNAME $FNAME

        :delete {force} th.aff
        :touch {force} th.aff
        @if not os.path.exists('th.orig.aff'):
            :touch {force} th.orig.aff
        @if not os.path.exists('th.orig.dic'):
            :copy th.dic th.orig.dic
        @if os.path.exists('th.diff'):
            :sys patch <th.diff


# Generate diff files, so that others can get the OpenOffice files and apply
# the diffs to get the Vim versions.

diff:
        :assertpkg diff
        :sys {force} diff -N -a -C 1 th.orig.aff th.aff >th.diff
        :sys {force} diff -a -C 1 th.orig.dic th.dic >>th.diff


# Check for updated spell files.  When there are changes the
# ".new.aff" and ".new.dic" files are left behind for manual inspection.

check:
        :print Sorry, not supported.
