mecano
Version:
Common functions for system deployment.
48 lines (44 loc) • 1.07 kB
JavaScript
// Generated by CoffeeScript 1.7.1
var EventEmitter, count;
EventEmitter = require('events').EventEmitter;
count = 0;
module.exports = function(mecano) {
var child, k, v, _fn;
child = new EventEmitter;
child.todos = [];
_fn = function(k) {
return child[k] = function(options, callback) {
child.todos.push([k, arguments]);
return child;
};
};
for (k in mecano) {
v = mecano[k];
_fn(k);
}
child.end = function(err, modified) {
var c, todo;
todo = child.todos.shift();
if (err || !todo) {
if (child.listeners('error').length) {
if (err) {
child.emit('error', err);
} else {
child.emit('end', modified);
}
} else {
child.emit('both', err, modified);
}
return;
}
c = mecano[todo[0]].apply(null, todo[1]);
c.id = "child " + (count++);
c.on('error', function(err) {
return child.end(err, 0);
});
return c.on('end', function(modified) {
return child.end(null, modified);
});
};
return child;
};