generateDependencyInfo: function()

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
        };
    },