Skip to content

Commit

Permalink
Finish up first pass on PackageTask.
Browse files Browse the repository at this point in the history
  • Loading branch information
mde committed Jun 29, 2011
1 parent 7b7b064 commit 5c0a7f9
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 26 deletions.
21 changes: 9 additions & 12 deletions lib/jake.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,8 @@ jake = new function () {
var name = _taskList[_taskIndex]
, task
, prereqs
, prereq
, prereqName
, prereqTask
, stats
, modTime;

Expand Down Expand Up @@ -274,11 +275,12 @@ jake = new function () {

if (prereqs.length) {
for (var i = 0, ii = prereqs.length; i < ii; i++) {
prereq = prereqs[i];
prereqName = prereqs[i];
prereqTask = this.getTask(prereqName);
// Run the action if the prereq is a normal task, or a file/directory
// task with a mod-date more recent than the one for this file
if (this.getTask(prereq).type == 'task' || !modTime ||
_modTimes[prereq] > modTime) {
if ((prereqTask && prereqTask.type == 'task') || !modTime ||
_modTimes[prereqName] > modTime) {
if (typeof task.action == 'function') {
task.action.apply(task, args || []);
// The action may have created/modified the file
Expand Down Expand Up @@ -331,14 +333,9 @@ jake = new function () {
// Task doesn't exist; assume file. Just get the mod-time if the file
// actually exists
else {
try {
stats = fs.statSync(name);
_modTimes[name] = stats.ctime;
complete();
}
catch (e) {
fail('File ' + name + ' not found.');
}
stats = fs.statSync(name);
_modTimes[name] = stats.ctime;
complete();
}
}
};
Expand Down
56 changes: 42 additions & 14 deletions lib/package_task.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
*
*/

var fs = require('fs')
var path = require('path')
, fs = require('fs')
, list = require('file_list')
, exec = require('child_process').exec;

Expand All @@ -29,6 +30,8 @@ var PackageTask = function (name, version, definition) {
this.needTar = false;
this.needTarGz = false;
this.needTarBz2 = false;
this.tarCommand = 'tar';
this.zipCommand = 'zip';
if (typeof definition == 'function') {
definition.call(this);
}
Expand Down Expand Up @@ -77,17 +80,15 @@ PackageTask.prototype = new (function () {
var filename = self.packageDir + '/' + self.packageName() + _compressOpts[p].ext
, taskObj = {};
task({'package': [filename]}, function () {
console.log('running package');
});
taskObj[filename] = [packageDirPath];
file(taskObj, function () {
console.log('running ' + filename);
var cmd = 'touch ' + filename;
var opts = _compressOpts[p];
process.chdir(self.packageDir);
var cmd = self.tarCommand + ' -' + opts.flag + 'cvf ' +
self.packageName() + opts.ext + ' ' + self.packageName();
exec(cmd, function (err, stdout, stderr) {
if (err) { throw err }
else if (stderr) {
fail(stderr);
}
complete();
});
}, true);
Expand All @@ -99,15 +100,42 @@ PackageTask.prototype = new (function () {

taskObj[packageDirPath] = [this.packageDir].concat(self.packageFiles.toArray());
file(taskObj, function () {
var cmd = 'mkdir -p ' + self.packageDir;
console.log(cmd);
exec(cmd, function (err, stdout, stderr) {
if (err) { throw err }
else if (stderr) {
fail(stderr);
var fileList = [];
self.packageFiles.forEach(function (name) {
var f = path.join(self.packageDirPath(), name)
, fDir = path.dirname(f)
, fDirArr = fDir.split('/')
, baseDir = ''
, stats;
fDirArr.forEach(function (dir) {
baseDir += baseDir ? '/' + dir : dir;
if (!path.existsSync(baseDir)) {
fs.mkdirSync(baseDir, 0755);
}
});
stats = fs.statSync(name);
if (stats.isDirectory()) {
fs.mkdirSync(f, 0755);
}
else {
fileList.push({
to: name
, from: f
});
}
complete();
});
var _copyFile = function () {
var file = fileList.pop();
if (file) {
exec('cp ' + file.to + ' ' + file.from, function (err, stdout, stderr) {
_copyFile();
});
}
else {
complete();
}
};
_copyFile();
}, true);


Expand Down

0 comments on commit 5c0a7f9

Please sign in to comment.