in src/plugman/util/dependencies.js [28:64]
generateDependencyInfo: function (platformJson, plugins_dir, pluginInfoProvider) {
const json = platformJson.root;
// TODO: store whole dependency tree in plugins/[platform].json
// in case plugins are forcefully removed...
const tlps = [];
const graph = new DepGraph();
Object.keys(json.installed_plugins).forEach(function (plugin_id) {
tlps.push(plugin_id);
const plugin_dir = path.join(plugins_dir, plugin_id);
const pluginInfo = pluginInfoProvider.get(plugin_dir);
const deps = pluginInfo.getDependencies(platformJson.platform);
deps.forEach(function (dep) {
graph.add(plugin_id, dep.id);
});
});
Object.keys(json.dependent_plugins).forEach(function (plugin_id) {
const plugin_dir = path.join(plugins_dir, plugin_id);
// dependency plugin does not exist (CB-7846)
if (!fs.existsSync(plugin_dir)) {
events.emit('verbose', 'Plugin "' + plugin_id + '" does not exist (' + plugin_dir + ')');
return;
}
const pluginInfo = pluginInfoProvider.get(plugin_dir);
const deps = pluginInfo.getDependencies(platformJson.platform);
deps.forEach(function (dep) {
graph.add(plugin_id, dep.id);
});
});
return {
graph,
top_level_plugins: tlps
};
},