summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-19 15:41:29 +0200
committerSamy Pessé <samypesse@gmail.com>2014-04-19 15:41:29 +0200
commit56eb4a2897ae78be35db33172376f9901e23546e (patch)
tree5d768d6e4ff6dc0705aee5a2255c0df0e42f165e
parent7a461eaa613312430712212bc2247a1961c762f8 (diff)
downloadgitbook-56eb4a2897ae78be35db33172376f9901e23546e.zip
gitbook-56eb4a2897ae78be35db33172376f9901e23546e.tar.gz
gitbook-56eb4a2897ae78be35db33172376f9901e23546e.tar.bz2
Add base plugin object and test validation of plugin
-rw-r--r--lib/generate/index.js4
-rw-r--r--lib/generate/plugin.js28
-rw-r--r--package.json3
-rw-r--r--test/plugin.js13
4 files changed, 46 insertions, 2 deletions
diff --git a/lib/generate/index.js b/lib/generate/index.js
index 33edc1f..f0e945f 100644
--- a/lib/generate/index.js
+++ b/lib/generate/index.js
@@ -6,6 +6,7 @@ var tmp = require('tmp');
var fs = require("./fs");
var parse = require("../parse");
+var Plugin = require("./plugin");
var generators = {
"site": require("./site"),
@@ -234,5 +235,6 @@ var generateFile = function(options) {
module.exports = {
generators: generators,
folder: generate,
- file: generateFile
+ file: generateFile,
+ Plugin: Plugin
};
diff --git a/lib/generate/plugin.js b/lib/generate/plugin.js
new file mode 100644
index 0000000..bc131c6
--- /dev/null
+++ b/lib/generate/plugin.js
@@ -0,0 +1,28 @@
+var semver = require("semver");
+var fs = require("./fs");
+
+var pkg = require("../../package.json");
+
+var Plugin = function(name) {
+ this.name = name;
+ this.packageInfos = {};
+
+ try {
+ this.packageInfos = require(name+"/package.json");
+ } catch (e) {
+ this.packageInfos = {};
+ }
+};
+
+// Test if it's a valid plugin
+Plugin.prototype.isValid = function() {
+ return (
+ this.packageInfos
+ && this.packageInfos.name
+ && this.packageInfos.engines
+ && this.packageInfos.engines.gitbook
+ && semver.satisfies(pkg.version, this.packageInfos.engines.gitbook)
+ );
+};
+
+module.exports = Plugin; \ No newline at end of file
diff --git a/package.json b/package.json
index fb4a610..42a520c 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,8 @@
"fs-extra": "0.8.1",
"highlight.js": "8.0.0",
"tmp": "0.0.23",
- "semver": "2.2.1"
+ "semver": "2.2.1",
+ "gitbook-plugin": "0.0.1"
},
"devDependencies": {
"mocha": "1.18.2",
diff --git a/test/plugin.js b/test/plugin.js
new file mode 100644
index 0000000..62fc039
--- /dev/null
+++ b/test/plugin.js
@@ -0,0 +1,13 @@
+var fs = require('fs');
+var path = require('path');
+var assert = require('assert');
+
+var Plugin = require('../').generate.Plugin;
+
+describe('Plugin loading', function () {
+ var plugin = new Plugin("gitbook-plugin");
+
+ it('should be valid', function() {
+ assert(plugin.isValid());
+ });
+});