Files
cappuccino/Objective-J/CommonJS/lib/objective-j/jake/applicationtask.js
T

116 lines
2.9 KiB
JavaScript

var FILE = require("file"),
OS = require("os"),
Jake = require("jake"),
BundleTask = require("objective-j/jake/bundletask").BundleTask;
function ApplicationTask(aName)
{
BundleTask.apply(this, arguments);
if (FILE.exists("index.html"))
this._indexFilePath = "index.html";
else
this._indexFilePath = null;
if (FILE.exists("Frameworks"))
this._frameworksPath = "Frameworks";
else
this._frameworksPath = null;
}
ApplicationTask.__proto__ = BundleTask;
ApplicationTask.prototype.__proto__ = BundleTask.prototype;
ApplicationTask.prototype.packageType = function()
{
return "APPL";
}
ApplicationTask.prototype.defineTasks = function()
{
BundleTask.prototype.defineTasks.apply(this, arguments);
this.defineFrameworksTask();
this.defineIndexFileTask();
}
ApplicationTask.prototype.setIndexFilePath = function(aFilePath)
{
this._indexFilePath = aFilePath;
}
ApplicationTask.prototype.indexFilePath = function()
{
return this._indexFilePath;
}
ApplicationTask.prototype.setFrameworksPath = function(aFrameworksPath)
{
// The default will use local app frameworks
// Pass in ENV["CAPP_BUILD"] to use your built frameworks
// Pass in "capp" to use installed frameworks
this._frameworksPath = aFrameworksPath;
}
ApplicationTask.prototype.frameworksPath = function()
{
return this._frameworksPath;
}
ApplicationTask.prototype.defineFrameworksTask = function()
{
// FIXME: platform requires...
if (!this._frameworksPath && this.environments().indexOf(require("objective-j/jake/environment").Browser) === -1)
return;
var buildPath = this.buildProductPath(),
newFrameworks = FILE.join(buildPath, "Frameworks"),
thisTask = this;
Jake.fileCreate(newFrameworks, function()
{
if (thisTask._frameworksPath === "capp")
OS.system("capp gen -f --force " + buildPath);
else if (thisTask._frameworksPath)
{
if (FILE.exists(newFrameworks))
FILE.rmtree(newFrameworks);
FILE.copyTree(thisTask._frameworksPath, newFrameworks);
}
});
this.enhance([newFrameworks]);
}
ApplicationTask.prototype.buildIndexFilePath = function()
{
return FILE.join(this.buildProductPath(), FILE.basename(this.indexFilePath()));
}
ApplicationTask.prototype.defineIndexFileTask = function()
{
if (!this._indexFilePath)
return;
var indexFilePath = this.indexFilePath(),
buildIndexFilePath = this.buildIndexFilePath();
Jake.filedir (buildIndexFilePath, [indexFilePath], function()
{
FILE.copy(indexFilePath, buildIndexFilePath);
});
this.enhance([buildIndexFilePath]);
}
exports.ApplicationTask = ApplicationTask;
exports.app = function(aName, aFunction)
{
// No .apply necessary because the parameters aren't variable.
return ApplicationTask.defineTask(aName, aFunction);
}