catjs
Version:
(Mobile) Web Automation Framework
87 lines (72 loc) • 2.77 kB
JavaScript
var _global = catrequire("cat.global"),
_log = _global.log(),
_props = catrequire("cat.props"),
_fs = require("fs.extra"),
_utils = catrequire("cat.utils");
/**
* Extension configuration class
*
* @param config The configuration:
* data - the configuration data
* global - The global data configuration
* emitter - The emitter reference
* @returns {*}
* @constructor
*/
module.exports = function (config) {
var me = this,
data, emitter, global, catconfig;
function _init() {
data = config.data;
emitter = config.emitter;
global = config.global;
catconfig = config.catconfig;
}
if (config) {
_init();
if (data) {
this.name = data.name;
this.type = data.type;
this.path = data.path;
this.data = data;
/**
* Apply Extension
*
* @param internalConfig The CAT internal configuration
*/
this.apply = function(internalConfig) {
var extensionobj,
path,
project = internalConfig.externalConfig.project,
projectInfo = project.info,
targetFolder = projectInfo.target;
if (me.type) {
extensionobj = internalConfig.getExtension(me.type);
if (extensionobj) {
extensionobj = extensionobj.ref;
// in case the extension has no path defined get the defaults
path = (me.path || targetFolder);
if (extensionobj) {
if (internalConfig.isWatch()) {
if (!extensionobj.watch) {
_log.warning(_props.get("cat.error.interface").format("[extension config]", "watch"));
} else {
extensionobj.watch({path: path, internalConfig: internalConfig});
}
} else {
if (!extensionobj.apply) {
_log.warning(_props.get("cat.error.interface").format("[extension config]", "apply"));
} else {
extensionobj.apply({path: path, internalConfig: internalConfig});
}
}
}
}
}
};
} else {
_log.warning("[Extension] No valid data configuration");
}
}
return this;
};