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

all: $SPELLDIR/af.latin1.spl $SPELLDIR/af.utf-8.spl ../README_af.txt

$SPELLDIR/af.latin1.spl : $FILES
        :sys env LANG=af_ZA.ISO8859-1
		$VIM -u NONE -e -c "mkspell! $SPELLDIR/af af_ZA" -c q

$SPELLDIR/af.utf-8.spl : $FILES
        :sys env LANG=af_ZA.UTF-8
		$VIM -u NONE -e -c "mkspell! $SPELLDIR/af af_ZA" -c q

../README_af.txt : README_af_ZA.txt
        :copy $source $target

#
# Fetching the file from SourceForge.  The archive at OpenOffice is broken!
#
FILE = http://surfnet.dl.sourceforge.net/sourceforge/translate/myspell-af_ZA-20040727.zip

:attr {fetch = $FILE} af_ZA.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.
af_ZA.aff af_ZA.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch af_ZA.zip
        :sys $UNZIP af_ZA.zip
        :delete af_ZA.zip
        @if not os.path.exists('af_ZA.orig.aff'):
            :copy af_ZA.aff af_ZA.orig.aff
        @if not os.path.exists('af_ZA.orig.dic'):
            :copy af_ZA.dic af_ZA.orig.dic
        @if os.path.exists('af_ZA.diff'):
            :sys patch <af_ZA.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 af_ZA.orig.aff af_ZA.aff >af_ZA.diff
        :sys {force} diff -a -C 1 af_ZA.orig.dic af_ZA.dic >>af_ZA.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 af_ZA.zip
        :mkdir tmp
        :cd tmp
        @try:
            @import stat
            :sys $UNZIP ../af_ZA.zip
            :sys {force} diff ../af_ZA.orig.aff af_ZA.aff >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy af_ZA.aff ../af_ZA.new.aff
            :sys {force} diff ../af_ZA.orig.dic af_ZA.dic >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy af_ZA.dic ../af_ZA.new.dic
        @finally:
            :cd ..
            :delete {r}{f}{q} tmp
            :delete af_ZA.zip


# vim: set sts=4 sw=4 :
