# Aap recipe for Dutch 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    = ny_MW.aff ny_MW.dic

all: $SPELLDIR/ny.iso-8859-14.spl $SPELLDIR/ny.utf-8.spl \
        $SPELLDIR/ny.ascii.spl ../README_ny.txt

$SPELLDIR/ny.iso-8859-14.spl : $VIM $FILES
        :sys $VIM -u NONE -e -c "set enc=iso-8859-14" 
                -c "mkspell! $SPELLDIR/ny ny_MW" -c q

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

$SPELLDIR/ny.ascii.spl : $VIM $FILES
        :sys $VIM -u NONE -e -c "mkspell! -ascii $SPELLDIR/ny ny_MW" -c q
 
../README_ny.txt : README_ny_MW.txt
        :copy $source $target

#
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
:attr {fetch = $OODIR/%file%} ny_MW.zip

# 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.
ny_MW.aff ny_MW.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch ny_MW.zip
        :sys $UNZIP ny_MW.zip
        :delete ny_MW.zip
        @if not os.path.exists('ny_MW.orig.aff'):
            :copy ny_MW.aff ny_MW.orig.aff
        @if not os.path.exists('ny_MW.orig.dic'):
            :copy ny_MW.dic ny_MW.orig.dic
        @if os.path.exists('ny_MW.diff'):
            :sys patch <ny_MW.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 -a -C 1 ny_MW.orig.aff ny_MW.aff >ny_MW.diff
        :sys {force} diff -a -C 1 ny_MW.orig.dic ny_MW.dic >>ny_MW.diff


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

check:
        :assertpkg unzip diff
        :fetch ny_MW.zip
        :mkdir tmp
        :cd tmp
        @try:
            @import stat
            :sys $UNZIP ../ny_MW.zip
            :sys {force} diff ../ny_MW.orig.aff ny_MW.aff >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy ny_MW.aff ../ny_MW.new.aff
            :sys {force} diff ../ny_MW.orig.dic ny_MW.dic >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy ny_MW.dic ../ny_MW.new.dic
        @finally:
            :cd ..
            :delete {r}{f}{q} tmp
            :delete ny_MW.zip


# vim: set sts=4 sw=4 :
