WIP: runtime api for node modules

This commit is contained in:
Nick O'Leary
2015-11-17 21:12:43 +00:00
parent f62b7afede
commit d673846e3d
10 changed files with 74 additions and 75 deletions

View File

@@ -66,7 +66,7 @@ function start() {
}
log.info(log._("runtime.version",{component:"Node.js ",version:process.version}));
log.info(log._("server.loading"));
redNodes.init(settings,storage);
redNodes.init(runtime);
return redNodes.load().then(function() {
var i;

View File

@@ -64,11 +64,11 @@ function createNode(node,def) {
}
}
function init(_settings,storage) {
settings = _settings;
credentials.init(storage);
flows.init(_settings,storage);
registry.init(_settings);
function init(runtime) {
settings = runtime.settings;
credentials.init(runtime.storage);
flows.init(runtime.settings,runtime.storage);
registry.init(runtime);
}
function disableNode(id) {

View File

@@ -25,11 +25,11 @@ var installer = require("./installer");
var settings;
function init(_settings) {
settings = _settings;
installer.init(settings);
loader.init(settings);
registry.init(settings,loader);
function init(runtime) {
settings = runtime.settings;
installer.init(runtime.settings);
loader.init(runtime);
registry.init(runtime.settings,loader);
}
function addModule(module) {

View File

@@ -19,23 +19,25 @@ var fs = require("fs");
var path = require("path");
var semver = require("semver");
var events = require("../../events");
var localfilesystem = require("./localfilesystem");
var registry = require("./registry");
var RED;
var settings;
var runtime;
var i18n = require("../../i18n");
function registerMessageCatalog(info) {
runtime.i18n.registerMessageCatalog(info.namespace,info.dir,info.file);
}
events.on("node-locales-dir", function(info) {
i18n.registerMessageCatalog(info.namespace,info.dir,info.file);
});
function init(_settings) {
settings = _settings;
localfilesystem.init(settings);
function init(_runtime) {
runtime = _runtime;
settings = runtime.settings;
localfilesystem.init(runtime);
if (runtime.events) {
runtime.events.removeListener("node-locales-dir", registerMessageCatalog);
runtime.events.on("node-locales-dir", registerMessageCatalog);
}
RED = require('../../../red');
}
@@ -55,7 +57,7 @@ function loadNodeFiles(nodeFiles) {
/* istanbul ignore else */
if (nodeFiles.hasOwnProperty(module)) {
if (nodeFiles[module].redVersion &&
!semver.satisfies(RED.version().replace("-git",""), nodeFiles[module].redVersion)) {
!semver.satisfies(runtime.version().replace("-git",""), nodeFiles[module].redVersion)) {
//TODO: log it
continue;
}
@@ -195,7 +197,7 @@ function loadNodeConfig(fileInfo) {
fs.stat(path.join(path.dirname(file),"locales"),function(err,stat) {
if (!err) {
node.namespace = node.id;
i18n.registerMessageCatalog(node.id,
runtime.i18n.registerMessageCatalog(node.id,
path.join(path.dirname(file),"locales"),
path.basename(file,".js")+".json")
.then(function() {
@@ -211,20 +213,6 @@ function loadNodeConfig(fileInfo) {
});
}
//function getAPIForNode(node) {
// var red = {
// nodes: RED.nodes,
// library: RED.library,
// credentials: RED.credentials,
// events: RED.events,
// log: RED.log,
//
// }
//
//}
/**
* Loads the specified node into the runtime
* @param node a node info object - see loadNodeConfig

View File

@@ -18,15 +18,18 @@ var when = require("when");
var fs = require("fs");
var path = require("path");
var events = require("../../events");
var log = require("../../log");
var events;
var log;
var settings;
var defaultNodesDir = path.resolve(path.join(__dirname,"..","..","..","..","nodes"));
var disableNodePathScan = false;
function init(_settings,_defaultNodesDir,_disableNodePathScan) {
settings = _settings;
function init(runtime,_defaultNodesDir,_disableNodePathScan) {
settings = runtime.settings;
events = runtime.events;
log = runtime.log;
if (_disableNodePathScan) {
disableNodePathScan = _disableNodePathScan;
}