modules util now provides a method for modules to 'subscribe' to it's know modules

This commit is contained in:
Spencer Alger 2014-03-06 11:21:17 -07:00
parent a619c0b52b
commit 26871a167e
3 changed files with 31 additions and 9 deletions

View file

@ -9,17 +9,20 @@ define(function (require) {
var scopedRequire = require('require');
var setup = require('./setup');
var configFile = require('../config');
var modules = require('modules');
require('elasticsearch');
require('angular-route');
var kibana = angular.module('kibana', [
// list external requirements here (modules created
// by the modules util are added automatically)
// list external requirements here
'elasticsearch',
'ngRoute'
]);
// tell the modules util to add it's modules as requirements for kibana
modules.link(kibana);
// proceed once setup is complete
setup(function (err) {
kibana

View file

@ -26,7 +26,8 @@ define(function (require) {
// create the setup module, it should require the same things
// that kibana currently requires, which should only include the
// loaded modules
var setup = angular.module('setup', kibana.requires);
var setup = angular.module('setup');
var unlink = require('modules').link(setup);
var appEl = document.createElement('div');
var kibanaIndexExists;
@ -45,14 +46,17 @@ define(function (require) {
async.apply(initConfig, config)
], function (err) {
// ready to go, remove the appEl, close services and boot be done
appEl.remove();
console.log('booting application');
angular.element(appEl).remove();
// stop adding modules to this one
unlink();
console.log('booting kibana');
return done(err);
});
});
function checkForKibanaIndex(es, done) {
console.log('look for kibana index');
es.indices.exists({
index: configFile.kibanaIndex
}, function (err, exists) {

View file

@ -1,18 +1,33 @@
define(function (require) {
var angular = require('angular');
var app = require('kibana');
var existingModules = {};
var _ = require('lodash');
var links = [];
return {
link: function (module) {
// as modules are defined they will be set as requirements for this app
links.push(module);
// merge in the existing modules
module.requires = _.union(module.requires, _.keys(existingModules));
// function to call that will unlink the module
return function unlink() {
var i = links.indexOf(module);
if (i > -1) links.splice(i, 1);
};
},
get: function (moduleName, requires) {
var module = existingModules[moduleName];
if (module === void 0) {
// create the module
module = existingModules[moduleName] = angular.module(moduleName, []);
// ensure that it is required by kibana
app.requires.push(moduleName);
// ensure that it is required by linked modules
_.each(links, function (app) {
if (!~app.requires.indexOf(moduleName)) app.requires.push(moduleName);
});
}
if (requires) {