summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-05 20:21:51 -0700
committerSamy Pessé <samypesse@gmail.com>2014-04-05 20:22:27 -0700
commit9ffec175a5cd5cd4e4e310ea14d6c28cb576bfc7 (patch)
tree36ca31f21239875db7c883bde2702effc1fec1e2 /bin
parent465188cae68d86017ce293e018eddf85f4de83ba (diff)
downloadgitbook-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.js54
-rwxr-xr-xbin/gitbook.js113
-rw-r--r--bin/utils.js6
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
};