var fs = require('fs'); var gm = require('gm'); var mkdirp = require('mkdirp'); var markdown = require( "markdown" ).markdown; var jade = require('jade'); var config = require('./config.js').config; var db = require('./db.js'); var generatePhotoSizesById = function generatePhotoSizesById(id, cb) { db.getPhotoById(id, function (photo) { if (photo) console.log('Got photo record for: '+photo.slug); var shortDate = helper.epochToShortDateString(photo.photoDate); var failure = false; var folder = config.genDir+'/photos/'+photo.slug; mkdirp(folder, function(err) { if (err) console.log(err); for (var size in config.imageSizes) { console.log('Generating '+size+' for '+photo.slug); var file = folder + '/'+size+'.'+photo.extension; (function(size){ gm(photo.path) .autoOrient() .resize(config.imageSizes[size], config.imageSizes[size]) .write(file, function(err) { if (err) { console.log(photo.slug+' resize failed.'); failure = true; } else { console.log(photo.slug+' '+size+' generated.'); } } ); })(size); } }); cb(failure); }); } exports.generatePhotoSizesById = generatePhotoSizesById; var generatePhotoPage = function (id, cb) { db.getPhotoById(id, function(photo) { console.log('Fetching photo id: '+id); var description = markdown.toHTML(photo.description); var photoDate = helper.epochToShortDateString(photo.photoDate); var url = '/photos/'+photo.slug+'/'; var filepath = config.genDir+url; var filename = filepath+'index.html'; var options = { pretty: false, title: photo.title, description: description, slug: photo.slug, url: url, extension: photo.extension, postDate: photo.photoDate }; console.log('Rendering photo: '+photo.title); var jadeOut = jade.renderFile('views/render-photo.jade', options); console.log('Creating directory: '+filepath); mkdirp(filepath, function(err) { if (err) { console.log(err); } else { console.log('Writing to file: '+filename); fs.writeFile(filename, jadeOut, 'utf-8', function(err) { if (err) console.log(err); cb(err); }); } }); }); } exports.generatePhotoPage = generatePhotoPage;