summaryrefslogtreecommitdiffstats
path: root/runtime/spell/pt/main.aap
blob: d7be7640e3921a62191611a83f125138baed4abd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# Aap recipe for Portuguese Vim spell files.
# See ftp://ftp.vim.org/pub/vim/runtime/spell/README.txt

# Use a freshly compiled Vim if it exists.
@if os.path.exists('../../../src/vim'):
    VIM = ../../../src/vim
@else:
    :progsearch VIM vim

SPELLDIR = ..
FILES    = pt_PT.aff pt_PT.dic
	   pt_BR.aff pt_BR.dic

#
# Fetching the pt_PT files from the Natura project.
#
PT_FNAME = oo3x-pt-PT.oxt
PT_DIR = http://extensions.services.openoffice.org/e-files/1196/5/$(PT_FNAME)
:attr {fetch = $PT_DIR} $PT_FNAME

#
# Fetching the pt_BR files from BrOffice.org (Brazilian OOo).
#
BR_FNAME = Vero_pt_BR_V207AOC.oxt
BR_DIR = http://www.broffice.org/files/$(BR_FNAME)
:attr {fetch = $BR_DIR} $BR_FNAME

all: $SPELLDIR/pt.latin1.spl $SPELLDIR/pt.utf-8.spl \
        ../README_pt.txt

$SPELLDIR/pt.latin1.spl : $FILES
        :sys env LANG=pt_PT.ISO-8859-1 LC_ALL=pt_PT.ISO-8859-1
		$VIM -u NONE -e -c "mkspell! $SPELLDIR/pt pt_PT pt_BR" -c q

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

../README_pt.txt: README_pt_PT.txt README_pt_BR.txt
        :print pt_PT >!$target
        :cat README_pt_PT.txt | :eval re.sub('\r', '', stdin) >>$target
        :print =================================================== >>$target
        :print pt_BR: >>$target
        :cat README_pt_BR.txt | :eval re.sub('\r', '', stdin) >>$target

# 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.
pt_PT.aff pt_PT.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch $PT_FNAME
        :sys $UNZIP $PT_FNAME
        :delete $PT_FNAME
        :move dictionaries/pt_PT.dic .
        :move dictionaries/pt_PT.aff .
        :move dictionaries/README_pt_PT.txt .
        :move dictionaries/COPYING COPYING_pt_PT.txt
        :delete {r}{f} dictionaries
        :delete {r}{f} META-INF
        :delete {f} description.xml
        :delete {f} dictionaries.xcu
        :delete {f} LICENSES.txt
        # Remove grammar items and the duplicates this causes
        :sys $VIM pt_PT.dic -u NONE -e -c "%s/\t.*//" -c "2,$$ sort u" -c update -c q
        :sys $VIM pt_PT.aff -u NONE -e -c "%s/\S\+=\S\+$$//" -c update -c q
        @if not os.path.exists('pt_PT.orig.aff'):
            :copy pt_PT.aff pt_PT.orig.aff
        @if not os.path.exists('pt_PT.orig.dic'):
            :copy pt_PT.dic pt_PT.orig.dic
        @if os.path.exists('pt_PT.diff'):
            :sys patch <pt_PT.diff

pt_BR.aff pt_BR.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch $BR_FNAME
        :sys $UNZIP $BR_FNAME
        :delete $BR_FNAME
        :delete {f} description.xml
        :delete {f} dictionaries.xcu
        :delete {f} hyph_pt_BR.dic
        :delete {r}{f} META-INF
        :delete {f} README_en.TXT
        :delete {f} README_hyph_pt_BR.TXT
        :sys $VIM README_pt_BR.TXT -u NONE -N -e -c "set ff=unix" -c update -c q
        :move README_pt_BR.TXT README_pt_BR.txt

        :sys $VIM pt_BR.dic -u NONE -N -e -c "set ff=unix" -c update -c q
        :sys $VIM pt_BR.aff -u NONE -N -e -c "set ff=unix" -c update -c q
        @if not os.path.exists('pt_BR.orig.aff'):
            :copy pt_BR.aff pt_BR.orig.aff
        @if not os.path.exists('pt_BR.orig.dic'):
            :copy pt_BR.dic pt_BR.orig.dic
        @if os.path.exists('pt_BR.diff'):
            :sys patch <pt_BR.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 pt_PT.orig.aff pt_PT.aff >pt_PT.diff
        :sys {force} diff -a -C 1 pt_PT.orig.dic pt_PT.dic >>pt_PT.diff
        :sys {force} diff -a -C 1 pt_BR.orig.aff pt_BR.aff >pt_BR.diff
	:sys {force} diff -a -C 1 pt_BR.orig.dic pt_BR.dic >>pt_BR.diff

# Delete all downloaded and generated files.
clean: clean_pt_BR clean_pt_PT

clean_pt_BR:
        :delete {f} pt_BR.aff
        :delete {f} pt_BR.dic
        :delete {f} pt_BR.orig.aff
        :delete {f} pt_BR.orig.dic
        :delete {f} README_pt_BR.txt

clean_pt_PT:
        :delete {f} pt_PT.aff
        :delete {f} pt_PT.dic
        :delete {f} pt_PT.orig.aff
        :delete {f} pt_PT.orig.dic
        :delete {f} README_pt_PT.txt
        :delete {f} COPYING_pt_PT.txt

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

check: check-pt check-br

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

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

# vim: set sts=4 sw=4 :