lisa-box
Version:
Home automation system L.I.S.A.
89 lines (82 loc) • 2.63 kB
JavaScript
/**
* Bootstrap function called when Trails server is ready
* @param app Trails application
*/
const LISA = require('../lisa')
const fs = require('fs')
//const serialPort = require('serialport')
const mdns = require('mdns-js')
const bonjour = require('bonjour')()
function getArgs() {
const args = {};
process.argv
.slice(2, process.argv.length)
.forEach( arg => {
// long arg
if (arg.slice(0,2) === '--') {
const longArg = arg.split('=');
const longArgFlag = longArg[0].slice(2,longArg[0].length);
const longArgValue = longArg.length > 1 ? longArg[1] : true;
args[longArgFlag] = longArgValue;
}
// flags
else if (arg[0] === '-') {
const flags = arg.slice(1,arg.length).split('');
flags.forEach(flag => {
args[flag] = true;
});
}
});
return args;
}
module.exports = (app) => {
app.services.WebSocketService.init()
app.services.IRService.init()
app.services.DiscoveryService.init()
app.lisa = new LISA(app)
app.bonjour = bonjour
app.mdns = mdns
const args = getArgs()
if (args['enable-voice-commands']) {
app.services.VoiceCommandsService.startVoiceCommands()
}
app.services.PluginService.installPlugin('lisa-plugin-example', '0.0.7', 'npm').then(() => {
console.log('lisa-plugin-hue installed')
}).catch((err, stack) => {
console.log(err)
console.log(stack)
});
/*app.services.PluginService.installPlugin('lisa-plugin-hue').then(() => {
console.log('lisa-plugin-hue installed')
}).catch((err, stack) => {
console.log(err)
console.log(stack)
});*/
if(app.env.NODE_ENV !== 'testing') {
/*eslint-disable */
//FIXME plugins should be manage from an online store
/* fs.readdirSync('./plugins').forEach(plugin => {
if (plugin !== '.gitkeep') {
try {
app.orm.Plugin.find({ where: { name: plugin } }).then(existingPlugin => {
if (existingPlugin) {
return app.services.PluginService._updatePlugin(plugin).then(() => {
return app.services.PluginService.enablePlugin(plugin)
})
} else {
return app.services.PluginService._addPlugin(plugin).then(() => {
return app.services.PluginService.enablePlugin(plugin)
}).catch(err => {
app.log.error(err)
})
}
})
}
catch (e) {
app.log.error(e)
}
}
})*/
/*eslint-enable */
}
}