Skip to content

Commit

Permalink
creating a plugin to generate md5 digest files
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryan Fitzgerald committed Jul 16, 2012
1 parent 34811a0 commit 829a88b
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
2 changes: 2 additions & 0 deletions examples/server.js
Expand Up @@ -6,6 +6,8 @@ var assembler = assembly.createAssembler({src : __dirname + "/src", dest: __dirn
assembler.use(assembly.processors.pathify);
assembler.use(assembly.processors.amdify);
// assembler.use(assembly.plugins.gzip);
// assembler.use(assembly.plugins.digest);

assembler.start();

server.use(assembler.server());
Expand Down
40 changes: 40 additions & 0 deletions lib/assembly/plugins/digest.js
@@ -0,0 +1,40 @@
// attach to listen for gzip events and write out a gzipped file
var utile = require('utile'),
path = require('path'),
fs = require('fs');

exports.attach = function (options) {
var manager = this;

manager.on("digest", generateDigest.bind(manager));
};

function generateDigest(srcFile, data) {
var manager = this;

manager.core.md5sum(srcFile, function(err, md5sum) {
if(err) return;

var digestFile = manager.core.buildPath(srcFile, {fullpath : true, version: md5sum});

writeFile.call(manager, digestFile, data, function(err) {
manager.log.info("compiled digest of" + srcFile + " to " + digestFile);
});
});
}

function writeFile(digestFile, data, callback) {
var manager = this;

utile.mkdirp(path.dirname(digestFile), function(err){
if(err) return callback(err);

fs.writeFile(digestFile, data, function(err){
if(err) return callback(err);

manager.emit("gzip", digestFile);

return callback(null, digestFile);
});
});
}
1 change: 1 addition & 0 deletions lib/assembly/worker.js
Expand Up @@ -117,6 +117,7 @@ Worker.prototype.write = function(srcFile, data, cb) {
fs.writeFile(outputFile, data, function(err){
if(err) return cb(err);

self.manager.emit("digest", srcFile, data);
self.manager.emit("gzip", outputFile);
self.manager.log.info("compiled " + srcFile + " to " + outputFile);
return cb(null, data);
Expand Down

0 comments on commit 829a88b

Please sign in to comment.