catjs
Version:
(Mobile) Web Automation Framework
113 lines (93 loc) • 3.77 kB
JavaScript
var _catglobal = catrequire("cat.global"),
_log = _catglobal.log(),
_path = require("path"),
_props = catrequire("cat.props"),
_basePlugin = catrequire("cat.plugin.base"),
_utils = catrequire("cat.utils"),
_fs = require("fs.extra"),
_regexputils = catrequire("cat.regexp.utils"),
_typedas = require("typedas");
module.exports = _basePlugin.ext(function () {
var _emitter,
_global,
_data,
_internalConfig,
_project,
_me = this;
return {
/**
* Initial plugin function
*
* @param config The configuration:
* data - The configuration data
* emitter - The emitter reference
* global - The global data configuration
* internalConfig - CAT internal configuration
*/
init: function (config) {
var pattern, flags, files, replace, applyto, bak,
extensionParams,
errors = ["[libraries plugin] No valid configuration"];
if (!config) {
_log.error(errors[1]);
_me.setDisabled(true);
}
_emitter = config.emitter;
_global = config.global;
_data = config.data;
_internalConfig = config.internalConfig;
_project = (_internalConfig ? _internalConfig.getProject() : undefined);
// initial data binding to 'this'
_me.dataInit(_data);
extensionParams = _data.data;
if (config && extensionParams) {
files = extensionParams.files;
pattern = extensionParams.pattern;
replace = extensionParams.replace;
flags = extensionParams.flags;
// optional types : [filename / content]
applyto = extensionParams.applyto;
bak = extensionParams.backup;
if (!applyto) {
applyto = ["content"];
}
if (files) {
files.forEach(function(file) {
var content,
fileName;
if (_fs.existsSync(file)) {
content = _fs.readFileSync(file, "utf8");
if (_utils.contains(applyto, "content")) {
if (content) {
content = _regexputils.replace(content, pattern, replace, flags);
}
}
if (bak) {
// save backup
_fs.renameSync(file, [file, ".catreplace"].join(""));
}
fileName = _path.basename(file);
if (_utils.contains(applyto, "filename")) {
fileName = _path.basename(file);
fileName = _regexputils.replace(fileName, pattern, replace, flags);
}
_fs.writeFileSync(_path.join(_path.dirname(file), fileName), content);
}
});
}
}
// done processing notification for the next task to take place
_emitter.emit("job.done", {status: "done"});
},
/**
* Validate the plugin
*
* dependencies {Array} The array of the supported dependencies types
*
* @returns {{dependencies: Array}}
*/
validate: function() {
return { dependencies: ["manager"]};
}
};
});