diff options
-rw-r--r-- | bin/build.js | 54 | ||||
-rwxr-xr-x | bin/gitbook.js | 113 | ||||
-rw-r--r-- | bin/utils.js | 6 | ||||
-rw-r--r-- | lib/generate/pdf/Index.js | 4 | ||||
-rw-r--r-- | package.json | 3 |
5 files changed, 64 insertions, 116 deletions
diff --git a/bin/build.js b/bin/build.js new file mode 100644 index 0000000..49978b8 --- /dev/null +++ b/bin/build.js @@ -0,0 +1,54 @@ +var path = require('path'); +var Q = require('q'); +var _ = require('lodash'); + +var utils = require('./utils'); + +var generate = require("../lib/generate"); +var parse = require("../lib/parse"); +var generators = require("../lib/generate").generators; + +var buildFunc = function(dir, options) { + dir = dir || process.cwd(); + outputDir = options.output || path.join(dir, '_book'); + + console.log('Starting build ...'); + // Get repo's URL + return utils.gitURL(dir) + .then(function(url) { + // Get ID of repo + return utils.githubID(url); + }, function(err) { + return null; + }) + .then(function(repoID) { + var githubID = options.github || repoID; + + if(!githubID) { + throw new Error('Needs a githubID (username/repo). Either set repo origin to a github repo or use the -g flag'); + } + + var parts = githubID.split('/', 2); + var user = parts[0], repo = parts[1]; + + var title = options.title || utils.titleCase(repo); + + return generate.folder( + { + input: dir, + output: outputDir, + title: title, + description: options.intro, + github: githubID, + generator: options.format, + theme: options.theme + } + ); + }) + .then(function(output) { + console.log("Successfuly built !"); + }, utils.logError) + .then(_.constant(outputDir)); +}; + +module.exports = buildFunc;
\ No newline at end of file diff --git a/bin/gitbook.js b/bin/gitbook.js deleted file mode 100755 index c280282..0000000 --- a/bin/gitbook.js +++ /dev/null @@ -1,113 +0,0 @@ -#! /usr/bin/env node - -// Requires -var Q = require('q'); -var _ = require('lodash'); -var path = require('path'); -var prog = require('commander'); - -var fs = require('fs'); - -var pkg = require('../package.json'); -var generate = require("../lib/generate"); -var parse = require("../lib/parse"); -var generators = require("../lib/generate").generators; - -var utils = require('./utils'); - -var logError = function(err) { - console.log(err.message || err); - return Q.reject(err); -}; - -// General options -prog -.version(pkg.version) -.option('-d, --dir <source_directory>', 'Source directory of book, containing Markdown files'); - - -var buildFunc; -prog -.command('build [source_dir]') -.description('Build a gitbook from a directory') -.option('-o, --output <directory>', 'Path to output directory, defaults to ./_book') -.option('-f, --format <name>', 'Change generation format, defaults to site, availables are: '+_.keys(generators).join(", ")) -.option('-t, --title <name>', 'Name of the book to generate, defaults to repo name') -.option('-i, --intro <intro>', 'Description of the book to generate') -.option('-g, --github <repo_path>', 'ID of github repo like : username/repo') -.option('-gh, --githubHost <url>', 'The url of the github host (defaults to https://github.com/') -.option('--theme <path>', 'Path to theme directory') -.action(buildFunc = function(dir, options) { - dir = dir || process.cwd(); - outputDir = options.output || path.join(dir, '_book'); - - console.log('Starting build ...'); - // Get repo's URL - return utils.gitURL(dir) - .then(function(url) { - // Get ID of repo - return utils.githubID(url); - }, function(err) { - return null; - }) - .then(function(repoID) { - var githubID = options.github || repoID; - - if(!githubID) { - throw new Error('Needs a githubID (username/repo). Either set repo origin to a github repo or use the -g flag'); - } - - var parts = githubID.split('/', 2); - var user = parts[0], repo = parts[1]; - - var title = options.title || utils.titleCase(repo); - - return generate.folder( - { - input: dir, - output: outputDir, - title: title, - description: options.intro, - github: githubID, - generator: options.format, - theme: options.theme - } - ); - }) - .then(function(output) { - console.log("Successfuly built !"); - }, logError) - .then(_.constant(outputDir)); -}); - -prog -.command('serve [source_dir]') -.description('Build then serve a gitbook from a directory') -.option('-p, --port <port>', 'Port for server to listen on', 4000) -.option('-o, --output <directory>', 'Path to output directory, defaults to ./_book') -.option('-f, --format <name>', 'Change generation format, defaults to site, availables are: '+_.keys(generators).join(", ")) -.option('-t, --title <name>', 'Name of the book to generate, defaults to repo name') -.option('-g, --github <repo_path>', 'ID of github repo like : username/repo') -.option('-gh, --githubHost <url>', 'The url of the github host (defaults to https://github.com/') -.option('--theme <path>', 'Path to theme directory') -.action(function(dir, options) { - buildFunc(dir, options) - .then(function(outputDir) { - console.log(); - console.log('Starting server ...'); - return utils.serveDir(outputDir, options.port) - .fail(logError); - }) - .then(function() { - console.log('Serving book on http://localhost:'+options.port); - console.log(); - console.log('Press CTRL+C to quit ...'); - }); -}); - - - -// Parse and fallback to help if no args -if(_.isEmpty(prog.parse(process.argv).args) && process.argv.length === 2) { - prog.help(); -} diff --git a/bin/utils.js b/bin/utils.js index 77d70c6..f736720 100644 --- a/bin/utils.js +++ b/bin/utils.js @@ -82,6 +82,11 @@ function serveDir(dir, port) { return d.promise; } +function logError(err) { + console.log(err.message || err); + return Q.reject(err); +}; + // Exports module.exports = { @@ -89,4 +94,5 @@ module.exports = { githubID: githubID, titleCase: titleCase, serveDir: serveDir, + logError: logError }; diff --git a/lib/generate/pdf/Index.js b/lib/generate/pdf/Index.js index 680bda3..e331633 100644 --- a/lib/generate/pdf/Index.js +++ b/lib/generate/pdf/Index.js @@ -17,7 +17,7 @@ var Generator = function() { // Options for PDF generation this.options = _.defaults(this.options, { - format: "A4" + paperformat: "A4" }); }; util.inherits(Generator, BaseGenerator); @@ -34,7 +34,7 @@ Generator.prototype.finish = function() { "generate", path.join(that.options.output, "index.html"), path.join(that.options.output, "index.pdf"), - "--format="+that.options.format + "--format="+that.options.paperformat ].join(" "); exec(command, function (error, stdout, stderr) { diff --git a/package.json b/package.json index 8a6f7b1..ff792f4 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "fstream-ignore": "0.0.7", "commander": "2.2.0", "fs-extra": "0.8.1", - "highlight.js": "8.0.0" + "highlight.js": "8.0.0", + "tmp": "0.0.23" }, "devDependencies": { "mocha": "1.18.2", |