diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-05 20:21:51 -0700 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-05 20:22:27 -0700 |
commit | 9ffec175a5cd5cd4e4e310ea14d6c28cb576bfc7 (patch) | |
tree | 36ca31f21239875db7c883bde2702effc1fec1e2 /bin | |
parent | 465188cae68d86017ce293e018eddf85f4de83ba (diff) | |
download | gitbook-9ffec175a5cd5cd4e4e310ea14d6c28cb576bfc7.zip gitbook-9ffec175a5cd5cd4e4e310ea14d6c28cb576bfc7.tar.gz gitbook-9ffec175a5cd5cd4e4e310ea14d6c28cb576bfc7.tar.bz2 |
Add command gitbook pdf to generate PDF
Diffstat (limited to 'bin')
-rw-r--r-- | bin/build.js | 54 | ||||
-rwxr-xr-x | bin/gitbook.js | 113 | ||||
-rw-r--r-- | bin/utils.js | 6 |
3 files changed, 60 insertions, 113 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 }; |