diff options
author | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-12-16 16:05:50 +0100 |
---|---|---|
committer | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-12-16 16:05:50 +0100 |
commit | 6c979c941943460b2dcdb84ef0c7f668620bef3f (patch) | |
tree | 8fb1f0983c13e529ba8ae4ff1168083f0415395d /bin/gitbook.js | |
parent | 7fd77323451e2088a77757049fad0098d048ef3c (diff) | |
download | gitbook-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-x | bin/gitbook.js | 62 |
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) { |