summaryrefslogtreecommitdiffstats
path: root/lib/plugins/loadPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins/loadPlugin.js')
-rw-r--r--lib/plugins/loadPlugin.js89
1 files changed, 0 insertions, 89 deletions
diff --git a/lib/plugins/loadPlugin.js b/lib/plugins/loadPlugin.js
deleted file mode 100644
index 9ed83a1..0000000
--- a/lib/plugins/loadPlugin.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var path = require('path');
-var resolve = require('resolve');
-var Immutable = require('immutable');
-
-var Promise = require('../utils/promise');
-var error = require('../utils/error');
-var timing = require('../utils/timing');
-
-var validatePlugin = require('./validatePlugin');
-
-// Return true if an error is a "module not found"
-// Wait on https://github.com/substack/node-resolve/pull/81 to be merged
-function isModuleNotFound(err) {
- return err.code == 'MODULE_NOT_FOUND' || err.message.indexOf('Cannot find module') >= 0;
-}
-
-/**
- Load a plugin in a book
-
- @param {Book} book
- @param {Plugin} plugin
- @param {String} pkgPath (optional)
- @return {Promise<Plugin>}
-*/
-function loadPlugin(book, plugin) {
- var logger = book.getLogger();
-
- var name = plugin.getName();
- var pkgPath = plugin.getPath();
-
- // Try loading plugins from different location
- var p = Promise()
- .then(function() {
- var packageContent;
- var packageMain;
- var content;
-
- // Locate plugin and load package.json
- try {
- var res = resolve.sync('./package.json', { basedir: pkgPath });
-
- pkgPath = path.dirname(res);
- packageContent = require(res);
- } catch (err) {
- if (!isModuleNotFound(err)) throw err;
-
- packageContent = undefined;
- content = undefined;
-
- return;
- }
-
- // Locate the main package
- try {
- var indexJs = path.normalize(packageContent.main || 'index.js');
- packageMain = resolve.sync('./' + indexJs, { basedir: pkgPath });
- } catch (err) {
- if (!isModuleNotFound(err)) throw err;
- packageMain = undefined;
- }
-
- // Load plugin JS content
- if (packageMain) {
- try {
- content = require(packageMain);
- } catch(err) {
- throw new error.PluginError(err, {
- plugin: name
- });
- }
- }
-
- // Update plugin
- return plugin.merge({
- 'package': Immutable.fromJS(packageContent),
- 'content': Immutable.fromJS(content || {})
- });
- })
-
- .then(validatePlugin);
-
- p = timing.measure('plugin.load', p);
-
- logger.info('loading plugin "' + name + '"... ');
- return logger.info.promise(p);
-}
-
-
-module.exports = loadPlugin;