summaryrefslogtreecommitdiffstats
path: root/lib/generate
diff options
context:
space:
mode:
Diffstat (limited to 'lib/generate')
-rw-r--r--lib/generate/config.js91
-rw-r--r--lib/generate/index.js69
2 files changed, 94 insertions, 66 deletions
diff --git a/lib/generate/config.js b/lib/generate/config.js
new file mode 100644
index 0000000..798bedc
--- /dev/null
+++ b/lib/generate/config.js
@@ -0,0 +1,91 @@
+var path = require('path');
+
+// Default configuration for gitbook
+module.exports = {
+ // Folders to use for output
+ // Caution: it overrides the value from the command line
+ // It's not advised this option in the book.json
+ "output": null,
+
+ // Generator to use for building
+ // Caution: it overrides the value from the command line
+ // It's not advised this option in the book.json
+ "generator": "site",
+
+ // Book title and description (defaults are extracted from the README)
+ "title": null,
+ "description": null,
+
+ // For ebook format, the extension to use for generation (default is detected from output extension)
+ // "epub", "pdf", "mobi"
+ // Caution: it overrides the value from the command line
+ // It's not advised this option in the book.json
+ "extension": null,
+
+ // Plugins list, can contain "-name" for removing default plugins
+ "plugins": [],
+
+ // Global configuration for plugins
+ "pluginsConfig": {
+ "fontSettings": {
+ "theme": null, //"sepia", "night" or "white",
+ "family": "serif",// "serif" or "sans",
+ "size": 2 // 1 - 4
+ }
+ },
+
+ // Set another theme with your own layout
+ // It's recommended to use plugins or add more options for default theme, though
+ // See https://github.com/GitbookIO/gitbook/issues/209
+ "theme": path.resolve(__dirname, '../../theme'),
+
+ // Links in template (null: default, false: remove, string: new value)
+ "links": {
+ // Link to home in the top-left corner
+ "home": null,
+
+ // Links in top of sidebar
+ "about": null,
+ "issues": null,
+ "contribute": null,
+
+ // Custom links at top of sidebar
+ "custom": {
+ //"Custom link name": "https://customlink.com"
+ },
+
+ // Sharing links
+ "sharing": {
+ "google": null,
+ "facebook": null,
+ "twitter": null
+ }
+ },
+
+
+ // Options for PDF generation
+ "pdf": {
+ // Add toc at the end of the file
+ "toc": true,
+
+ // Add page numbers to the bottom of every page
+ "pageNumbers": false,
+
+ // Font size for the fiel content
+ "fontSize": 12,
+
+ // Paper size for the pdf
+ // Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]
+ "paperSize": "a4",
+
+ // Margin (in pts)
+ // Note: 72 pts equals 1 inch
+ "margin": {
+ "right": 62,
+ "left": 62,
+ "top": 36,
+ "bottom": 36
+ }
+ }
+};
+
diff --git a/lib/generate/index.js b/lib/generate/index.js
index 53de646..362d613 100644
--- a/lib/generate/index.js
+++ b/lib/generate/index.js
@@ -7,6 +7,7 @@ var swig = require('./template');
var fs = require("./fs");
var parse = require("../parse");
var Plugin = require("./plugin");
+var defaultConfig = require("./config");
var generators = {
"site": require("./site"),
@@ -25,7 +26,7 @@ var containsFiles = function(dir, files) {
.then(_.all);
};
-// TEst if generator exists
+// Test if generator exists
var checkGenerator = function(options) {
if (!generators[options.generator]) {
return Q.reject(new Error("Invalid generator (availables are: "+_.keys(generators).join(", ")+")"));
@@ -48,40 +49,7 @@ var loadGenerator = function(options) {
var generate = function(options) {
// Set defaults to options
- options = _.defaults(options || {}, {
- // Folders to use
- "input": null,
- "output": null,
-
- // Config file (relative to input)
- "configFile": "book",
-
- // Output generator
- "generator": "site",
-
- // Book title, keyword, description
- "title": null,
- "description": null,
-
- // Origin github repository id
- "github": null,
- "githubHost": 'https://github.com/',
-
- // Theming
- "theme": path.resolve(__dirname, '../../theme'),
-
- // Plugins
- "plugins": [],
- "pluginsConfig": {},
- "defaultsPlugins": [], // Default plugins that can't be set in book.json
-
- // Links
- "links": {
- "about": null,
- "issues": null,
- "contribue": null,
- }
- });
+ options = _.merge(options || {}, defaultConfig, _.defaults);
// Validate options
if (!options.input) {
@@ -217,37 +185,6 @@ var generateBook = function(options) {
return fs.remove(options.output);
})
- // Get repo's URL
- .then(function() {
- // Git deactivated
- if(options.github === false) {
- options.github = null;
- return null;
- } else if(options.github) {
- // Git already specified in options
- options.github = (
- // Support URLs in "github" entry of book.json
- parse.git.githubID(options.github) ||
-
- // Fallback
- options.github
- );
- return;
- }
-
- // Try auto detecting
- return parse.git.url(options.input)
- .then(function(_url) {
- // Get ID of repo
- return parse.git.githubID(_url);
- }, function(err) {
- return null;
- })
- .then(function(repoId) {
- options.github = repoId;
- });
- })
-
.then(function() {
return fs.mkdirp(options.output);
})