2
2
module . exports = function ( grunt ) {
3
3
4
4
var // modules
5
- fs = require ( "fs" ) ,
6
- path = require ( "path" ) ,
7
5
pygmentize = require ( "pygmentize" ) ,
8
- rimraf = require ( "rimraf" ) ,
9
- spawn = require ( "child_process" ) . spawn ,
10
6
11
7
// files
12
8
pageFiles = grunt . file . expandFiles ( "pages/*.html" ) ,
13
9
entryFiles = grunt . file . expandFiles ( "entries/*.xml" ) ,
14
10
noteFiles = grunt . file . expandFiles ( "notes/*.xml" ) ,
15
- resourceFiles = grunt . file . expandFiles ( "resources/*" ) ,
16
11
17
12
xmlFiles = [ ] . concat ( entryFiles , noteFiles , "cat2tax.xsl" , "categories.xml" , "entries2html.xsl" , "xml2json.xsl" ) ;
18
13
19
- function pathSlug ( fileName ) {
20
- return path . basename ( fileName , path . extname ( fileName ) ) ;
21
- }
22
-
23
14
grunt . loadNpmTasks ( "grunt-clean" ) ;
24
15
grunt . loadNpmTasks ( "grunt-wordpress" ) ;
16
+ grunt . loadNpmTasks ( "grunt-jquery-content" ) ;
25
17
26
18
grunt . initConfig ( {
27
19
clean : {
@@ -33,38 +25,18 @@ grunt.initConfig({
33
25
xmllint : {
34
26
all : xmlFiles
35
27
} ,
28
+ xmltidy : {
29
+ all : [ ] . concat ( entryFiles , noteFiles , "categories.xml" )
30
+ } ,
31
+ "build-xml-entries" : {
32
+ all : entryFiles
33
+ } ,
34
+ "build-resources" : {
35
+ all : grunt . file . expandFiles ( "resources/*" )
36
+ } ,
36
37
wordpress : grunt . utils . _ . extend ( {
37
38
dir : "dist/wordpress"
38
- } , grunt . file . readJSON ( "config-stage.json" ) )
39
- } ) ;
40
-
41
- grunt . registerTask ( "xmllint" , function ( ) {
42
- var task = this ,
43
- taskDone = task . async ( ) ;
44
- grunt . utils . async . forEachSeries ( xmlFiles , function ( fileName , fileDone ) {
45
- grunt . verbose . write ( "Linting " + fileName + "..." ) ;
46
- grunt . utils . spawn ( {
47
- cmd : "xmllint" ,
48
- args : [ "--noout" , fileName ]
49
- } , function ( err , result ) {
50
- if ( err ) {
51
- grunt . verbose . error ( ) ;
52
- grunt . log . error ( err ) ;
53
- fileDone ( ) ;
54
- return ;
55
- }
56
- grunt . verbose . ok ( ) ;
57
- fileDone ( ) ;
58
- } ) ;
59
- } , function ( ) {
60
- if ( task . errorCount ) {
61
- grunt . warn ( "Task \"" + task . name + "\" failed." ) ;
62
- taskDone ( ) ;
63
- return ;
64
- }
65
- grunt . log . writeln ( "Lint free files: " + xmlFiles . length ) ;
66
- taskDone ( ) ;
67
- } ) ;
39
+ } , grunt . file . readJSON ( "config.json" ) )
68
40
} ) ;
69
41
70
42
grunt . registerTask ( "build-pages" , function ( ) {
@@ -103,169 +75,8 @@ grunt.registerTask( "build-pages", function() {
103
75
} ) ;
104
76
} ) ;
105
77
106
- grunt . registerTask ( "build-entries" , function ( ) {
107
- var task = this ,
108
- taskDone = task . async ( ) ,
109
- // TODO make `entry` a custom post type instead of (ab)using `post`?
110
- targetDir = grunt . config ( "wordpress.dir" ) + "/posts/post/" ;
111
-
112
- grunt . file . mkdir ( targetDir ) ;
113
-
114
- grunt . utils . async . forEachSeries ( entryFiles , function ( fileName , fileDone ) {
115
- grunt . verbose . write ( "Transforming (pass 1: preproc-xinclude.xsl) " + fileName + "..." ) ;
116
- grunt . utils . spawn ( {
117
- cmd : "xsltproc" ,
118
- args : [ "preproc-xinclude.xsl" , fileName ]
119
- } , function ( err , pass1result ) {
120
- if ( err ) {
121
- grunt . verbose . error ( ) ;
122
- grunt . log . error ( err ) ;
123
- fileDone ( ) ;
124
- return ;
125
- }
126
- grunt . verbose . ok ( ) ;
127
-
128
- var targetXMLFileName = "entries_tmp/" + path . basename ( fileName ) ;
129
-
130
- grunt . file . write ( targetXMLFileName , pass1result ) ;
131
-
132
- grunt . verbose . write ( "Transforming (pass 2: entries2html.xsl) " + fileName + "..." ) ;
133
- grunt . utils . spawn ( {
134
- cmd : "xsltproc" ,
135
- args : [ "--xinclude" , "entries2html.xsl" , targetXMLFileName ]
136
- } , function ( err , pass2result ) {
137
- if ( err ) {
138
- grunt . verbose . error ( ) ;
139
- grunt . log . error ( err ) ;
140
- fileDone ( ) ;
141
- return ;
142
- }
143
- grunt . verbose . ok ( ) ;
144
-
145
- var targetHTMLFileName = targetDir + path . basename ( fileName ) ;
146
- targetHTMLFileName = targetHTMLFileName . substr ( 0 , targetHTMLFileName . length - "xml" . length ) + "html" ;
147
-
148
- grunt . verbose . write ( "Pygmentizing " + targetHTMLFileName + "..." ) ;
149
- pygmentize . file ( pass2result , function ( error , data ) {
150
- if ( error ) {
151
- grunt . verbose . error ( ) ;
152
- grunt . log . error ( error ) ;
153
- fileDone ( ) ;
154
- return ;
155
- }
156
- grunt . verbose . ok ( ) ;
157
-
158
- grunt . file . write ( targetHTMLFileName , data ) ;
159
-
160
- fileDone ( ) ;
161
- } ) ;
162
- } ) ;
163
- } ) ;
164
- } , function ( ) {
165
- if ( task . errorCount ) {
166
- grunt . warn ( "Task \"" + task . name + "\" failed." ) ;
167
- taskDone ( ) ;
168
- return ;
169
- }
170
- rimraf . sync ( "entries_tmp" ) ;
171
- grunt . log . writeln ( "Built " + entryFiles . length + " entries." ) ;
172
- taskDone ( ) ;
173
- } ) ;
174
- } ) ;
175
-
176
- grunt . registerTask ( "build-categories" , function ( ) {
177
- var task = this ,
178
- taskDone = task . async ( ) ,
179
- categories = { } ,
180
- outFilename = grunt . config ( "wordpress.dir" ) + "/taxonomies.json" ;
181
-
182
- grunt . utils . spawn ( {
183
- cmd : "xsltproc" ,
184
- args : [ "--output" , "taxonomies.xml" , "cat2tax.xsl" , "categories.xml" ]
185
- } , function ( err , result ) {
186
- if ( err ) {
187
- grunt . verbose . error ( ) ;
188
- grunt . log . error ( err ) ;
189
- taskDone ( ) ;
190
- return ;
191
- }
192
- grunt . utils . spawn ( {
193
- cmd : "xsltproc" ,
194
- args : [ "--output" , outFilename , "xml2json.xsl" , "taxonomies.xml" ]
195
- } , function ( err , result ) {
196
- if ( err ) {
197
- grunt . verbose . error ( ) ;
198
- grunt . log . error ( err ) ;
199
- taskDone ( ) ;
200
- return ;
201
- }
202
- fs . unlinkSync ( "taxonomies.xml" ) ;
203
- grunt . verbose . ok ( ) ;
204
- taskDone ( ) ;
205
- } ) ;
206
- } ) ;
207
- } ) ;
208
-
209
- grunt . registerTask ( "build-resources" , function ( ) {
210
- var task = this ,
211
- taskDone = task . async ( ) ,
212
- targetDir = grunt . config ( "wordpress.dir" ) + "/resources/" ;
213
-
214
- grunt . file . mkdir ( targetDir ) ;
215
-
216
- grunt . utils . async . forEachSeries ( resourceFiles , function ( fileName , fileDone ) {
217
- grunt . file . copy ( fileName , targetDir + path . basename ( fileName ) ) ;
218
- fileDone ( ) ;
219
- } , function ( ) {
220
- if ( task . errorCount ) {
221
- grunt . warn ( "Task \"" + task . name + "\" failed." ) ;
222
- taskDone ( ) ;
223
- return ;
224
- }
225
- grunt . log . writeln ( "Built " + resourceFiles . length + " resources." ) ;
226
- taskDone ( ) ;
227
- } ) ;
228
- } ) ;
229
-
230
- grunt . registerTask ( "xmltidy" , function ( ) {
231
- var task = this ,
232
- taskDone = task . async ( ) ,
233
- filesToTidy = [ ] . concat ( entryFiles , noteFiles , "categories.xml" ) ;
234
-
235
- // Only tidy files that are lint free
236
- task . requires ( "xmllint" ) ;
237
-
238
- grunt . utils . async . forEachSeries ( filesToTidy , function ( fileName , fileDone ) {
239
- grunt . verbose . write ( "Tidying " + fileName + "..." ) ;
240
- grunt . utils . spawn ( {
241
- cmd : "xmllint" ,
242
- args : [ "--format" , fileName ]
243
- } , function ( err , result ) {
244
- if ( err ) {
245
- grunt . verbose . error ( ) ;
246
- grunt . log . error ( err ) ;
247
- fileDone ( ) ;
248
- return ;
249
- }
250
- grunt . verbose . ok ( ) ;
251
-
252
- grunt . file . write ( fileName , result ) ;
253
-
254
- fileDone ( ) ;
255
- } ) ;
256
- } , function ( ) {
257
- if ( task . errorCount ) {
258
- grunt . warn ( "Task \"" + task . name + "\" failed." ) ;
259
- taskDone ( ) ;
260
- return ;
261
- }
262
- grunt . log . writeln ( "Tidied " + filesToTidy . length + " files." ) ;
263
- taskDone ( ) ;
264
- } ) ;
265
- } ) ;
266
-
267
78
grunt . registerTask ( "default" , "build-wordpress" ) ;
268
- grunt . registerTask ( "build-wordpress" , "clean lint xmllint build-pages build-entries build-categories build-resources" ) ;
79
+ grunt . registerTask ( "build-wordpress" , "clean lint xmllint build-pages build-xml- entries build-xml -categories build-resources" ) ;
269
80
grunt . registerTask ( "tidy" , "xmllint xmltidy" ) ;
270
81
271
82
} ;
0 commit comments