summaryrefslogtreecommitdiffstats
path: root/lib/plugins
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-02-16 15:53:12 +0100
committerSamy Pesse <samypesse@gmail.com>2016-02-16 15:53:12 +0100
commit702db46f20d2b613540901311708cf4e49d95690 (patch)
treecbc8f3811fad341d534d1af4bfff6e8cc92bec6a /lib/plugins
parent327d0bf5c52982a5a20967c8435aff9b60ed509d (diff)
downloadgitbook-702db46f20d2b613540901311708cf4e49d95690.zip
gitbook-702db46f20d2b613540901311708cf4e49d95690.tar.gz
gitbook-702db46f20d2b613540901311708cf4e49d95690.tar.bz2
Add base for plugin linking/installation
Diffstat (limited to 'lib/plugins')
-rw-r--r--lib/plugins/plugin.js13
-rw-r--r--lib/plugins/registry.js38
2 files changed, 40 insertions, 11 deletions
diff --git a/lib/plugins/plugin.js b/lib/plugins/plugin.js
index 05fa8ca..7ce29e4 100644
--- a/lib/plugins/plugin.js
+++ b/lib/plugins/plugin.js
@@ -1,25 +1,16 @@
-var _ = require('lodash');
var path = require('path');
var resolve = require('resolve');
var Promise = require('../utils/promise');
var gitbook = require('../gitbook');
-
-var PLUGIN_PREFIX = 'gitbook-plugin-';
-
-// Return an absolute name for the plugin (the one on NPM)
-function npmId(name) {
- if (name.indexOf(PLUGIN_PREFIX) === 0) return name;
- return [PLUGIN_PREFIX, name].join('');
-}
-
+var registry = require('./registry');
function BookPlugin(book, pluginId) {
this.book = book;
this.log = this.book.log;
this.id = pluginId;
- this.npmId = npmId(pluginId);
+ this.npmId = registry.npmId(pluginId);
this.baseDir;
this.packageInfos = undefined;
diff --git a/lib/plugins/registry.js b/lib/plugins/registry.js
new file mode 100644
index 0000000..6b1cddb
--- /dev/null
+++ b/lib/plugins/registry.js
@@ -0,0 +1,38 @@
+var npm = require('npm');
+
+var PLUGIN_PREFIX = 'gitbook-plugin-';
+
+// Return an absolute name for the plugin (the one on NPM)
+function npmId(name) {
+ if (name.indexOf(PLUGIN_PREFIX) === 0) return name;
+ return [PLUGIN_PREFIX, name].join('');
+}
+
+// Return a plugin ID 9the one on GitBook
+function pluginId(name) {
+ return name.replace(PLUGIN_PREFIX, '');
+}
+
+// Validate an NPM plugin ID
+function validateId(name) {
+ return name.indexOf(PLUGIN_PREFIX) === 0;
+}
+
+// Link a plugin for use in a specific book
+function linkPlugin(book, pluginPath) {
+ book.log('linking', pluginPath);
+}
+
+// Install a plugin in a book
+function installPlugin(book, pluginId) {
+ book.log('installing plugin', pluginId);
+}
+
+module.exports = {
+ npmId: npmId,
+ pluginId: pluginId,
+ validateId: validateId,
+
+ link: linkPlugin,
+ install: installPlugin
+};