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

# I don't have a Malagasy locale, use the Dutch one instead.
all: $SPELLDIR/mg.latin1.spl $SPELLDIR/mg.utf-8.spl ../README_mg.txt

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

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

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


# vim: set sts=4 sw=4 :
