radxa-rock
Version:
GPIO interface for the Radxa Rock
60 lines (55 loc) • 1.78 kB
JavaScript
var fs = require('fs');
var Hapi = require('hapi');
var util = require('util');
var path = require('path');
var config = require('../lib/config');
var apiConfig = config.section('api', {route: '/api/v1/'});
var pluginsPath = path.resolve(config.pluginsPath||'./plugins/');
var Sockets = require('../lib/sockets');
var sockets = new Sockets();
var Plugger = require('../internal/plugger').Plugger;
var async = require('async');
var pjson = require('../package.json');
var webconfig = config.section('web', {port: 8080, host: '0.0.0.0'});
var stores = require('../lib/store');
var plugger = new Plugger({
path: pluginsPath
});
var PORT = webconfig.port;
var server = new Hapi.Server(webconfig.host, PORT);
var started = function(){
sockets.init(server.listener);
console.log(pjson.name+" website started on http://%s:%s", webconfig.host, PORT);
};
var loadLib = function(libFile){
return require('../lib/'+libFile);
};
plugger.load(function(err, plugins){
if(err){
console.error(err.stack||err);
process.exit(1);
}
async.eachSeries(plugins, function(plugin, next){
try{
var section = plugin.name.replace(/\.js$/i, '').toLowerCase();
var cfg = config.section(section, {});
cfg.route = cfg.route || apiConfig.route;
console.log('Loading plugin: ', plugin.name);
plugin.plugin({
hapi: server,
sockets: sockets,
config: cfg,
lib: loadLib,
pluginsFolder: pluginsPath,
plugins: plugins,
stores: stores
}, next);
}catch(e){
console.log('Error loading: '+(plugin.location||plugin.name));
console.log(e.stack||e);
next();
}
}, function(){
server.start(started);
});
});