blob: e8ac24c355ef35f94b24ba818ccd5166d9193674 [file] [log] [blame]
/*
* Copyright 2012 Research In Motion Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var path = require("path"),
wrench = require("wrench"),
cmdline = require("./cmdline"),
logger = require("./logger"),
fileManager = require("./file-manager"),
localize = require("./localize"),
configParser = require("./config-parser"),
packagerUtils = require("./packager-utils"),
packagerValidator = require("./packager-validator"),
barBuilder = require("./bar-builder"),
session;
module.exports = {
start: function (callback) {
try {
cmdline.parse(process.argv);
session = require("./session").initialize(cmdline.commander);
//prepare files for webworks archiving
logger.log(localize.translate("PROGRESS_FILE_POPULATING_SOURCE"));
fileManager.prepareOutputFiles(session);
//parse config.xml
logger.log(localize.translate("PROGRESS_SESSION_CONFIGXML"));
configParser.parse(path.join(session.sourceDir, "config.xml"), session, function (configObj) {
//validate session Object
packagerValidator.validateSession(session, configObj);
//validage configuration object
packagerValidator.validateConfig(session, configObj);
//generate user.js
logger.log(localize.translate("PROGRESS_GEN_OUTPUT"));
//Adding debuEnabled property to user.js. Framework will enable/disable WebInspector based on that variable.
configObj.debugEnabled = session.debug;
barBuilder.build(session, configObj, function (code) {
fileManager.cleanSource(session);
if (code === 0) {
logger.log(localize.translate("PROGRESS_COMPLETE"));
}
if (callback && typeof callback === "function") {
callback(code);
}
});
});
} catch (e) {
try {
fileManager.cleanSource(session);
} catch (ex) {
} finally {
logger.error(e);
if (callback && typeof callback === "function") {
callback(e);
}
}
}
}
};