feat: 新增reload命令 新增配置类
This commit is contained in:
parent
c3fa8bf3df
commit
e93a438cc2
@ -5,6 +5,7 @@
|
|||||||
/*global Java, base, module, exports, require, __FILE__*/
|
/*global Java, base, module, exports, require, __FILE__*/
|
||||||
// var zip = require("core/zip");
|
// var zip = require("core/zip");
|
||||||
var fs = require('core/fs');
|
var fs = require('core/fs');
|
||||||
|
var yaml = require('modules/yaml');
|
||||||
var event = require('modules/event');
|
var event = require('modules/event');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,12 +71,65 @@ function loadJsPlugin(files) {
|
|||||||
if (!p.description || !p.description.name) {
|
if (!p.description || !p.description.name) {
|
||||||
log.w("文件 %s 不存在 description 描述信息 无法加载插件!", file);
|
log.w("文件 %s 不存在 description 描述信息 无法加载插件!", file);
|
||||||
} else {
|
} else {
|
||||||
|
initPlugin(file, p);
|
||||||
plugins.push(p);
|
plugins.push(p);
|
||||||
plugins[p.description.name] = p;
|
plugins[p.description.name] = p;
|
||||||
log.i('插件 %s 版本 %s 加载成功!', p.description.name, p.description.version);
|
log.i('载入插件 %s 版本 %s By %s', p.description.name, p.description.version || '未知', p.description.author || '未知');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 初始化插件内容(提供config,__DATA__等参数)
|
||||||
|
*/
|
||||||
|
function initPlugin(file, plugin){
|
||||||
|
// 初始化 __DATA__
|
||||||
|
plugin.__DATA__ = fs.file(file.parentFile, plugin.description.name);
|
||||||
|
// 初始化 getFile()
|
||||||
|
plugin.getFile = function(name) {
|
||||||
|
return fs.file(plugin.__DATA__, name);
|
||||||
|
}
|
||||||
|
// 初始化 getConfig()
|
||||||
|
/**
|
||||||
|
* 获取配置文件
|
||||||
|
* @constructor
|
||||||
|
* @constructor (file|string)
|
||||||
|
*/
|
||||||
|
plugin.getConfig = function() {
|
||||||
|
switch (arguments.length) {
|
||||||
|
case 0:
|
||||||
|
return plugin.config;
|
||||||
|
case 1:
|
||||||
|
var file = arguments[0];
|
||||||
|
if (!file.isFile) {
|
||||||
|
file = plugin.getFile(file);
|
||||||
|
}
|
||||||
|
return yaml.safeLoad(base.read(file));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 初始化 saveConfig()
|
||||||
|
/**
|
||||||
|
* 保存配置文件
|
||||||
|
* @constructor
|
||||||
|
* @constructor (file, content)
|
||||||
|
*/
|
||||||
|
plugin.saveConfig = function() {
|
||||||
|
switch (arguments.length) {
|
||||||
|
case 0:
|
||||||
|
base.save(plugin.configFile, yaml.safeDump(plugin.config));
|
||||||
|
case 2:
|
||||||
|
base.save(arguments[0], yaml.safeDump(arguments[1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 初始化 getDataFolder()
|
||||||
|
plugin.getDataFolder = function() {
|
||||||
|
return plugin.__DATA__;
|
||||||
|
}
|
||||||
|
// 初始化 config
|
||||||
|
plugin.configFile = plugin.getFile('config.yml');
|
||||||
|
if (plugin.configFile.isFile()) {
|
||||||
|
plugin.config = plugin.getConfig('config.yml');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function runAndCatch(jsp, exec, ext) {
|
function runAndCatch(jsp, exec, ext) {
|
||||||
if (exec) {
|
if (exec) {
|
||||||
@ -97,6 +151,10 @@ function checkAndGet(args) {
|
|||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
var name = args[0];
|
var name = args[0];
|
||||||
|
// 如果是插件 则直接返回
|
||||||
|
if (name.description) {
|
||||||
|
return [name];
|
||||||
|
}
|
||||||
if (!exports.plugins[name]) {
|
if (!exports.plugins[name]) {
|
||||||
throw new Error("插件 " + name + "不存在!");
|
throw new Error("插件 " + name + "不存在!");
|
||||||
}
|
}
|
||||||
@ -124,3 +182,10 @@ exports.enable = function () {
|
|||||||
exports.disable = function () {
|
exports.disable = function () {
|
||||||
checkAndGet(arguments).forEach(function (p) runAndCatch(p, p.disable, function () event.disable(p)));
|
checkAndGet(arguments).forEach(function (p) runAndCatch(p, p.disable, function () event.disable(p)));
|
||||||
};
|
};
|
||||||
|
exports.reload = function () {
|
||||||
|
checkAndGet(arguments).forEach(function (p) {
|
||||||
|
exports.disable(p);
|
||||||
|
exports.load(p);
|
||||||
|
exports.enable(p);
|
||||||
|
});
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user