diff options
Diffstat (limited to 'gulpfile.js')
-rw-r--r-- | gulpfile.js | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/gulpfile.js b/gulpfile.js index 612ebee..3f63fa6 100644 --- a/gulpfile.js +++ b/gulpfile.js | |||
@@ -10,6 +10,8 @@ | |||
10 | var git = require('gulp-git'); | 10 | var git = require('gulp-git'); |
11 | var filter = require('gulp-filter'); | 11 | var filter = require('gulp-filter'); |
12 | var less = require('gulp-less'); | 12 | var less = require('gulp-less'); |
13 | var data = require('gulp-data'); | ||
14 | var change = require('gulp-change'); | ||
13 | var rsync = require('gulp-rsync'); | 15 | var rsync = require('gulp-rsync'); |
14 | var webserver = require('gulp-webserver'); | 16 | var webserver = require('gulp-webserver'); |
15 | var streamqueue = require('streamqueue'); | 17 | var streamqueue = require('streamqueue'); |
@@ -101,6 +103,8 @@ | |||
101 | var $ = cheerio.load(fs.readFileSync(file)); | 103 | var $ = cheerio.load(fs.readFileSync(file)); |
102 | posts.push({ | 104 | posts.push({ |
103 | 'title': $("head title").text(), | 105 | 'title': $("head title").text(), |
106 | 'description': $("head meta[name='description']").attr('content'), | ||
107 | 'body': $("body").text(), | ||
104 | 'mtime': stat.mtime, | 108 | 'mtime': stat.mtime, |
105 | 'path': 'posts/' + files[i] | 109 | 'path': 'posts/' + files[i] |
106 | }); | 110 | }); |
@@ -114,6 +118,12 @@ | |||
114 | return posts; | 118 | return posts; |
115 | } | 119 | } |
116 | 120 | ||
121 | function performTemplateChange(content) { | ||
122 | var file = dir.src + '/templates/post.hbs'; | ||
123 | var stat = fs.statSync(file); | ||
124 | return fs.readFileSync(file, {'encoding': 'utf-8'}); | ||
125 | } | ||
126 | |||
117 | /** | 127 | /** |
118 | * Clean the output directory. | 128 | * Clean the output directory. |
119 | * | 129 | * |
@@ -211,7 +221,7 @@ | |||
211 | /** | 221 | /** |
212 | * Package the handlebars files. | 222 | * Package the handlebars files. |
213 | */ | 223 | */ |
214 | gulp.task('package:posts', function () { | 224 | gulp.task('package:postindex', function () { |
215 | 225 | ||
216 | var templateData = { | 226 | var templateData = { |
217 | 'posts': buildPostManifest(), | 227 | 'posts': buildPostManifest(), |
@@ -227,6 +237,30 @@ | |||
227 | .pipe(gulp.dest(dir.dist)); | 237 | .pipe(gulp.dest(dir.dist)); |
228 | }); | 238 | }); |
229 | 239 | ||
240 | gulp.task('package:posts', function () { | ||
241 | |||
242 | var templateData = { | ||
243 | 'author': packageJson.author | ||
244 | }; | ||
245 | |||
246 | // Automatically build the site list. | ||
247 | return gulp.src(dir.src + '/posts/*.html', {'base': dir.src}) | ||
248 | .pipe(data(function(path) { | ||
249 | var stat = fs.statSync(path); | ||
250 | var $ = cheerio.load(fs.readFileSync(path)); | ||
251 | return { | ||
252 | 'title': $("head title").text(), | ||
253 | 'description': $("head meta[name='description']").attr('content'), | ||
254 | 'body': $("body").text(), | ||
255 | }})) | ||
256 | .pipe(change(performTemplateChange)) | ||
257 | .pipe(handlebars(templateData, handlebarsConfig)) | ||
258 | .pipe(rename(function (path) { | ||
259 | path.extname = ".html"; | ||
260 | })) | ||
261 | .pipe(gulp.dest(dir.dist)); | ||
262 | }); | ||
263 | |||
230 | /** | 264 | /** |
231 | * Copy the HTML files into the dist folder. | 265 | * Copy the HTML files into the dist folder. |
232 | */ | 266 | */ |
@@ -296,7 +330,7 @@ | |||
296 | * Package the entire site into the dist folder. | 330 | * Package the entire site into the dist folder. |
297 | */ | 331 | */ |
298 | gulp.task('package', ['package:html', 'package:talks', 'package:posts', | 332 | gulp.task('package', ['package:html', 'package:talks', 'package:posts', |
299 | 'package:libs', | 333 | 'package:postindex', 'package:libs', |
300 | 'package:images', 'package:css', 'package:js']); | 334 | 'package:images', 'package:css', 'package:js']); |
301 | 335 | ||
302 | gulp.task('rsync', function () { | 336 | gulp.task('rsync', function () { |