diff options
| author | Monty Taylor <mordred@inaugust.com> | 2015-08-01 06:21:17 +1000 |
|---|---|---|
| committer | Monty Taylor <mordred@inaugust.com> | 2015-08-01 11:49:35 +1000 |
| commit | 39c5c5f4845e0cf415a7ae289370b39f8473db72 (patch) | |
| tree | 84dd2f0b5406d160114b671dc2e60a33964fb0a4 /gulpfile.js | |
| parent | 816c90235ed3393b72fc2344457a105971049b5b (diff) | |
Make layout of posts templated
Diffstat (limited to 'gulpfile.js')
| -rw-r--r-- | gulpfile.js | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/gulpfile.js b/gulpfile.js index 612ebee..981f289 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,8 +103,9 @@ | |||
| 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'), | ||
| 104 | 'mtime': stat.mtime, | 107 | 'mtime': stat.mtime, |
| 105 | 'path': 'posts/' + files[i] | 108 | 'path': 'posts/' + files[i].replace('.hbs', '.html') |
| 106 | }); | 109 | }); |
| 107 | } catch (e) { | 110 | } catch (e) { |
| 108 | // Do nothing | 111 | // Do nothing |
| @@ -114,6 +117,12 @@ | |||
| 114 | return posts; | 117 | return posts; |
| 115 | } | 118 | } |
| 116 | 119 | ||
| 120 | function performTemplateChange(content) { | ||
| 121 | var file = dir.src + '/templates/post.hbs'; | ||
| 122 | var stat = fs.statSync(file); | ||
| 123 | return fs.readFileSync(file, {'encoding': 'utf-8'}); | ||
| 124 | } | ||
| 125 | |||
| 117 | /** | 126 | /** |
| 118 | * Clean the output directory. | 127 | * Clean the output directory. |
| 119 | * | 128 | * |
| @@ -211,7 +220,7 @@ | |||
| 211 | /** | 220 | /** |
| 212 | * Package the handlebars files. | 221 | * Package the handlebars files. |
| 213 | */ | 222 | */ |
| 214 | gulp.task('package:posts', function () { | 223 | gulp.task('package:postindex', function () { |
| 215 | 224 | ||
| 216 | var templateData = { | 225 | var templateData = { |
| 217 | 'posts': buildPostManifest(), | 226 | 'posts': buildPostManifest(), |
| @@ -227,6 +236,30 @@ | |||
| 227 | .pipe(gulp.dest(dir.dist)); | 236 | .pipe(gulp.dest(dir.dist)); |
| 228 | }); | 237 | }); |
| 229 | 238 | ||
| 239 | gulp.task('package:posts', function () { | ||
| 240 | |||
| 241 | var templateData = { | ||
| 242 | 'author': packageJson.author | ||
| 243 | }; | ||
| 244 | |||
| 245 | // Automatically build the site list. | ||
| 246 | return gulp.src(dir.src + '/posts/*.hbs', {'base': dir.src}) | ||
| 247 | .pipe(data(function(file) { | ||
| 248 | var stat = fs.statSync(file.path); | ||
| 249 | var $ = cheerio.load(fs.readFileSync(file.path)); | ||
| 250 | return { | ||
| 251 | 'title': $("head title").text(), | ||
| 252 | 'description': $("head meta[name='description']").attr('content'), | ||
| 253 | 'body': $("body").html(), | ||
| 254 | }})) | ||
| 255 | .pipe(change(performTemplateChange)) | ||
| 256 | .pipe(handlebars(templateData, handlebarsConfig)) | ||
| 257 | .pipe(rename(function (path) { | ||
| 258 | path.extname = ".html"; | ||
| 259 | })) | ||
| 260 | .pipe(gulp.dest(dir.dist)); | ||
| 261 | }); | ||
| 262 | |||
| 230 | /** | 263 | /** |
| 231 | * Copy the HTML files into the dist folder. | 264 | * Copy the HTML files into the dist folder. |
| 232 | */ | 265 | */ |
| @@ -295,8 +328,9 @@ | |||
| 295 | /** | 328 | /** |
| 296 | * Package the entire site into the dist folder. | 329 | * Package the entire site into the dist folder. |
| 297 | */ | 330 | */ |
| 298 | gulp.task('package', ['package:html', 'package:talks', 'package:posts', | 331 | gulp.task('package', ['package:html', 'package:talks', |
| 299 | 'package:libs', | 332 | 'package:posts', |
| 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 () { |
