diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-19 15:41:29 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-19 15:41:29 +0200 |
commit | 56eb4a2897ae78be35db33172376f9901e23546e (patch) | |
tree | 5d768d6e4ff6dc0705aee5a2255c0df0e42f165e | |
parent | 7a461eaa613312430712212bc2247a1961c762f8 (diff) | |
download | gitbook-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.js | 4 | ||||
-rw-r--r-- | lib/generate/plugin.js | 28 | ||||
-rw-r--r-- | package.json | 3 | ||||
-rw-r--r-- | test/plugin.js | 13 |
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()); + }); +}); |