A Jake task executes a long-running system command. Another task depends on the first task being completely finished before starting. The \'exec\' function of \'child_process\'
I found the answer to my own question by re-rereading Matthew Eernisse's post. For those wondering how to do it:
var exec = require('child_process').exec;
desc('first task');
task('first', [], function(params) {
exec('long running system command', function() {
complete();
});
}, true); // this prevents task from exiting until complete() is called
desc('second task');
task('second', ['first'], function(params) {
// do something dependent on the completion of 'first' task
});
Just for future reference, I have a synchronous exec module with no other dependencies.
Example:
var allsync = require("allsync");
allsync.exec( "find /", function(data){
process.stdout.write(data);
});
console.log("Done!");
In the above exampale, Done
is only printed after the find
process exists. The exec
function essentially blocks until complete.