# Aap recipe for Kinyarwanda (Rwanda) 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    = rw_RW.aff rw_RW.dic

all: $SPELLDIR/rw.latin1.spl $SPELLDIR/rw.utf-8.spl ../README_rw.txt

# I don't have a Kinyarwanda locale, use the Dutch one instead.
$SPELLDIR/rw.latin1.spl : $FILES
        :sys env LANG=nl_NL.ISO8859-1
		$VIM -u NONE -e -c "mkspell! $SPELLDIR/rw rw_RW" -c q

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

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


# vim: set sts=4 sw=4 :
