summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-05-02 09:56:32 +0200
committerSamy Pessé <samypesse@gmail.com>2016-05-02 09:56:32 +0200
commitfabf4f0c0ab1ecd089d7f242940b2b9396cd9b9c (patch)
tree55a5c35ded7dfd41c6f364ee4d76e0644069bda4
parentd467888d6aacde1a29c7eebfab6b91a0c586d6ca (diff)
downloadgitbook-fabf4f0c0ab1ecd089d7f242940b2b9396cd9b9c.zip
gitbook-fabf4f0c0ab1ecd089d7f242940b2b9396cd9b9c.tar.gz
gitbook-fabf4f0c0ab1ecd089d7f242940b2b9396cd9b9c.tar.bz2
Enable livereload plugin when serving content
-rw-r--r--lib/cli/serve.js4
-rw-r--r--lib/models/book.js10
-rw-r--r--lib/modifiers/config/addPlugin.js20
-rw-r--r--lib/modifiers/config/index.js4
-rw-r--r--lib/modifiers/index.js3
-rw-r--r--lib/parse/parseConfig.js6
-rw-r--r--lib/plugins/listAll.js4
7 files changed, 46 insertions, 5 deletions
diff --git a/lib/cli/serve.js b/lib/cli/serve.js
index 628f591..1c380e5 100644
--- a/lib/cli/serve.js
+++ b/lib/cli/serve.js
@@ -4,6 +4,7 @@ var tinylr = require('tiny-lr');
var Parse = require('../parse');
var Output = require('../output');
+var ConfigModifier = require('../modifiers').Config;
var options = require('./options');
var getBook = require('./getBook');
@@ -26,6 +27,9 @@ function generateBook(args, kwargs) {
.then(function() {
return Parse.parseBook(book)
.then(function(resultBook) {
+ // Enable livereload plugin
+ resultBook = ConfigModifier.addPlugin(resultBook, 'livereload');
+
return Output.generate(Generator, resultBook, {
root: outputFolder
});
diff --git a/lib/models/book.js b/lib/models/book.js
index f960df1..cd6cfad 100644
--- a/lib/models/book.js
+++ b/lib/models/book.js
@@ -212,6 +212,16 @@ Book.prototype.setReadme = function(readme) {
};
/**
+ Set the configuration for this book
+
+ @param {Config}
+ @return {Book}
+*/
+Book.prototype.setConfig = function(config) {
+ return this.set('config', config);
+};
+
+/**
Change log level
@param {String} level
diff --git a/lib/modifiers/config/addPlugin.js b/lib/modifiers/config/addPlugin.js
new file mode 100644
index 0000000..938b686
--- /dev/null
+++ b/lib/modifiers/config/addPlugin.js
@@ -0,0 +1,20 @@
+
+/**
+ Add a plugin to a book's configuration
+
+ @param {Book} book
+ @param {String} plugin
+ @param {String} version (optional)
+ @return {Book}
+*/
+function addPlugin(book, plugin, version) {
+ var config = book.getConfig();
+ var plugins = config.getValue('plugins', []);
+
+ plugins = plugins.push('livereload');
+ config = config.setValue('plugins', plugins);
+
+ return book.setConfig(config);
+}
+
+module.exports = addPlugin;
diff --git a/lib/modifiers/config/index.js b/lib/modifiers/config/index.js
new file mode 100644
index 0000000..3c84f94
--- /dev/null
+++ b/lib/modifiers/config/index.js
@@ -0,0 +1,4 @@
+
+module.exports = {
+ addPlugin: require('./addPlugin')
+};
diff --git a/lib/modifiers/index.js b/lib/modifiers/index.js
index ed09e31..ad24604 100644
--- a/lib/modifiers/index.js
+++ b/lib/modifiers/index.js
@@ -1,4 +1,5 @@
module.exports = {
- Summary: require('./summary')
+ Summary: require('./summary'),
+ Config: require('./config')
};
diff --git a/lib/parse/parseConfig.js b/lib/parse/parseConfig.js
index 5200de2..3ab64b7 100644
--- a/lib/parse/parseConfig.js
+++ b/lib/parse/parseConfig.js
@@ -1,3 +1,5 @@
+var is = require('is');
+
var Promise = require('../utils/promise');
var Config = require('../models/config');
@@ -43,6 +45,10 @@ function parseConfig(book) {
values = validateConfig(values);
+ if (is.string(values.plugins)) {
+ values.plugins = values.plugins.split(',');
+ }
+
var config = Config.create(file, values);
return book.set('config', config);
});
diff --git a/lib/plugins/listAll.js b/lib/plugins/listAll.js
index 65b8d7f..6863030 100644
--- a/lib/plugins/listAll.js
+++ b/lib/plugins/listAll.js
@@ -12,10 +12,6 @@ var DEFAULT_PLUGINS = require('../constants/defaultPlugins');
@return {OrderedMap<Plugin>}
*/
function listAll(plugins) {
- if (is.string(plugins)) {
- plugins = new Immutable.List(plugins.split(','));
- }
-
// Convert to an ordered map
plugins = plugins.map(function(plugin) {
if (is.string(plugin)) {