/** * Copyright 2013, 2015 IBM Corp. * * 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 express = require('express'); var when = require('when'); var child_process = require('child_process'); var path = require("path"); var fs = require("fs"); var redNodes = require("./nodes"); var comms = require("./comms"); var storage = require("./storage"); var log = require("./log"); var app = null; var nodeApp = null; var server = null; var settings = null; var runtimeMetricInterval = null; function init(_server,_settings) { server = _server; settings = _settings; comms.init(_server,_settings); nodeApp = express(); app = express(); } function start() { return storage.init(settings) .then(settings.load(storage)) .then(function() { if (settings.httpAdminRoot !== false) { require("./api").init(app,storage); } if (log.metric()) { runtimeMetricInterval = setInterval(function() { reportMetrics(); }, settings.runtimeMetricInterval||15000); } console.log("\n\nWelcome to Node-RED\n===================\n"); if (settings.version) { log.info("Node-RED version: v"+settings.version); } log.info("Node.js version: "+process.version); log.info("Loading palette nodes"); redNodes.init(settings,storage,app); redNodes.load().then(function() { var i; var nodes = redNodes.getNodeList(); var nodeErrors = nodes.filter(function(n) { return n.err!=null;}); var nodeMissing = nodes.filter(function(n) { return n.module && n.enabled && !n.loaded && !n.err;}); if (nodeErrors.length > 0) { log.warn("------------------------------------------"); if (settings.verbose) { for (i=0;i 0) { log.warn("Missing node modules:"); var missingModules = {}; for (i=0;i 0) { log.info("Added node types:"); for (var i=0;i