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

all: $SPELLDIR/tr.utf-8.spl 

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

# Fetching LibreOffice spell files
FILE = https://github.com/bitigchi/bitigchi.github.io/raw/master/vim-tr-spell/tr_TR.zip
:attr {fetch = $FILE} tr_TR.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.
tr_TR.aff tr_TR.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch tr_TR.zip
        :sys $UNZIP tr_TR.zip
        :delete tr_TR.zip
        @if not os.path.exists('tr_TR.orig.aff'):
            :copy tr_TR.aff tr_TR.orig.aff
        @if not os.path.exists('tr_TR.orig.dic'):
            :copy tr_TR.dic tr_TR.orig.dic
        @if os.path.exists('tr_TR.diff'):
            :sys patch <tr_TR.diff

# Generate diff files
diff:
        :assertpkg diff
        :sys {force} diff -a -C 1 tr_TR.orig.aff tr_TR.aff >tr_TR.diff
        :sys {force} diff -a -C 1 tr_TR.orig.dic tr_TR.dic >>tr_TR.diff

# Check for updated LibreOffice spell files.  When there are changes the
# ".new.aff" and ".new.dic" files are left behind for manual inspection.
check:
        :assertpkg unzip diff
        :fetch tr_TR.zip
        :mkdir tmp
        :cd tmp
        @try:
            @import stat
            :sys $UNZIP ../tr_TR.zip
            :sys {force} diff ../tr_TR.orig.aff tr_TR.aff >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy tr_TR.aff ../tr_TR.new.aff
            :sys {force} diff ../tr_TR.orig.dic tr_TR.dic >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy tr_TR.dic ../tr_TR.new.dic
        @finally:
            :cd ..
            :delete {r}{f}{q} tmp
            :delete tr_TR.zip

# Remove all the downloaded and generated files.
clean:
        :delete tr_TR.aff
        :delete tr_TR.dic
        :delete tr_TR.orig.aff
        :delete tr_TR.orig.dic
