68 lines
No EOL
1.9 KiB
JavaScript
68 lines
No EOL
1.9 KiB
JavaScript
define(function(f, e) {
|
|
var g = f("pilot/promise").Promise;
|
|
e.REASONS = {APP_STARTUP:1, APP_SHUTDOWN:2, PLUGIN_ENABLE:3, PLUGIN_DISABLE:4, PLUGIN_INSTALL:5, PLUGIN_UNINSTALL:6, PLUGIN_UPGRADE:7, PLUGIN_DOWNGRADE:8};
|
|
e.Plugin = function(b) {
|
|
this.name = b;
|
|
this.status = this.INSTALLED
|
|
};
|
|
e.Plugin.prototype = {NEW:0, INSTALLED:1, REGISTERED:2, STARTED:3, UNREGISTERED:4, SHUTDOWN:5, install:function(b, d) {
|
|
var a = new g;
|
|
if(this.status > this.NEW) {
|
|
a.resolve(this);
|
|
return a
|
|
}f([this.name], function(c) {
|
|
c.install && c.install(b, d);
|
|
this.status = this.INSTALLED;
|
|
a.resolve(this)
|
|
}.bind(this));
|
|
return a
|
|
}, register:function(b, d) {
|
|
var a = new g;
|
|
if(this.status != this.INSTALLED) {
|
|
a.resolve(this);
|
|
return a
|
|
}f([this.name], function(c) {
|
|
c.register && c.register(b, d);
|
|
this.status = this.REGISTERED;
|
|
a.resolve(this)
|
|
}.bind(this));
|
|
return a
|
|
}, startup:function(b, d) {
|
|
var a = new g;
|
|
if(this.status != this.REGISTERED) {
|
|
a.resolve(this);
|
|
return a
|
|
}f([this.name], function(c) {
|
|
c.startup && c.startup(b, d);
|
|
this.status = this.STARTED;
|
|
a.resolve(this)
|
|
}.bind(this));
|
|
return a
|
|
}, shutdown:function(b, d) {
|
|
if(this.status == this.STARTED) {
|
|
pluginModule = f(this.name);
|
|
pluginModule.shutdown && pluginModule.shutdown(b, d)
|
|
}
|
|
}};
|
|
e.PluginCatalog = function() {
|
|
this.plugins = {}
|
|
};
|
|
e.PluginCatalog.prototype = {registerPlugins:function(b, d, a) {
|
|
var c = [];
|
|
b.forEach(function(i) {
|
|
var h = this.plugins[i];
|
|
if(h === undefined) {
|
|
h = new e.Plugin(i);
|
|
this.plugins[i] = h;
|
|
c.push(h.register(d, a))
|
|
}
|
|
}.bind(this));
|
|
return g.group(c)
|
|
}, startupPlugins:function(b, d) {
|
|
var a = [];
|
|
for(var c in this.plugins) {
|
|
a.push(this.plugins[c].startup(b, d))
|
|
}return g.group(a)
|
|
}};
|
|
e.catalog = new e.PluginCatalog
|
|
}); |