summaryrefslogtreecommitdiffstats
path: root/bin/gitbook.js
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@friendco.de>2014-12-16 16:05:50 +0100
committerAaron O'Mullan <aaron.omullan@friendco.de>2014-12-16 16:05:50 +0100
commit6c979c941943460b2dcdb84ef0c7f668620bef3f (patch)
tree8fb1f0983c13e529ba8ae4ff1168083f0415395d /bin/gitbook.js
parent7fd77323451e2088a77757049fad0098d048ef3c (diff)
downloadgitbook-6c979c941943460b2dcdb84ef0c7f668620bef3f.zip
gitbook-6c979c941943460b2dcdb84ef0c7f668620bef3f.tar.gz
gitbook-6c979c941943460b2dcdb84ef0c7f668620bef3f.tar.bz2
Robust CLI error handling
Fixes #528, fixes #524, fixes #518
Diffstat (limited to 'bin/gitbook.js')
-rwxr-xr-xbin/gitbook.js62
1 files changed, 30 insertions, 32 deletions
diff --git a/bin/gitbook.js b/bin/gitbook.js
index 49a3e49..80d139f 100755
--- a/bin/gitbook.js
+++ b/bin/gitbook.js
@@ -12,6 +12,7 @@ var initDir = require("../lib/generate/init");
var fs = require('../lib/generate/fs');
var utils = require('./utils');
+var action = utils.action;
var build = require('./build');
var Server = require('./server');
var platform = require("./platform");
@@ -22,13 +23,13 @@ prog
build.command(prog.command('build [source_dir]'))
.description('Build a gitbook from a directory')
-.action(build.folder);
+.action(action(build.folder));
build.command(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('--no-watch', 'Disable restart with file watching')
-.action(function(dir, options) {
+.action(action(function(dir, options) {
var server = new Server();
// init livereload server
@@ -41,9 +42,11 @@ build.command(prog.command('serve [source_dir]'))
});
var generate = function() {
- if (server.isRunning()) console.log("Stopping server");
+ if (server.isRunning()) {
+ console.log("Stopping server");
+ }
- server.stop()
+ return server.stop()
.then(function() {
return build.folder(dir, _.extend(options || {}, {
defaultsPlugins: ["livereload"]
@@ -77,16 +80,18 @@ build.command(prog.command('serve [source_dir]'))
console.log('Press CTRL+C to quit ...');
console.log('')
- generate();
-});
+
+ return generate();
+}));
build.commandEbook(prog.command('install [source_dir]'))
.description('Install plugins for a book')
-.action(function(dir, options) {
+.action(action(function(dir, options) {
dir = dir || process.cwd();
-
+
console.log("Install plugins in", dir);
- genbook.config.read({
+
+ return genbook.config.read({
input: dir
})
.then(function(options) {
@@ -94,66 +99,59 @@ build.commandEbook(prog.command('install [source_dir]'))
})
.then(function() {
console.log("Successfully installed plugins!");
- })
- .fail(function(err) {
- // Log error
- utils.logError(err);
-
- // Exit process with failure code
- process.exit(-1);
});
-});
+}));
build.commandEbook(prog.command('pdf [source_dir]'))
.description('Build a gitbook as a PDF')
-.action(function(dir, options) {
- build.file(dir, _.extend(options, {
+.action(action(function(dir, options) {
+ return build.file(dir, _.extend(options, {
extension: "pdf",
format: "ebook"
}));
-});
+}));
build.commandEbook(prog.command('epub [source_dir]'))
.description('Build a gitbook as a ePub book')
-.action(function(dir, options) {
- build.file(dir, _.extend(options, {
+.action(action(function(dir, options) {
+ return build.file(dir, _.extend(options, {
extension: "epub",
format: "ebook"
}));
-});
+}));
build.commandEbook(prog.command('mobi [source_dir]'))
.description('Build a gitbook as a Mobi book')
-.action(function(dir, options) {
- build.file(dir, _.extend(options, {
+.action(action(function(dir, options) {
+ return build.file(dir, _.extend(options, {
extension: "mobi",
format: "ebook"
}));
-});
+}));
prog
.command('init [source_dir]')
.description('Create files and folders based on contents of SUMMARY.md')
-.action(function(dir) {
+.action(action(function(dir) {
dir = dir || process.cwd();
return initDir(dir);
-});
+}));
prog
.command('publish [source_dir]')
.description('Publish content to the associated gitbook.io book')
-.action(function(dir) {
+.action(action(function(dir) {
dir = dir || process.cwd();
return platform.publish(dir);
-});
+}));
prog
.command('git:remote [source_dir] [book_id]')
.description('Adds a git remote to a book repository')
-.action(function(dir, bookId) {
+.action(action(function(dir, bookId) {
dir = dir || process.cwd();
return platform.remote(dir, bookId);
-});
+}));
// Parse and fallback to help if no args
if(_.isEmpty(prog.parse(process.argv).args) && process.argv.length === 2) {