From 58726cb9daf1054afa696d1bf951d7faac309b17 Mon Sep 17 00:00:00 2001 From: Jeff Williams Date: Wed, 9 Oct 2019 14:17:24 -0400 Subject: [PATCH] fix(jsdoc): wait for async templates to finish before existing Previously, we could exit before the template finished running, making it impossible to build a truly async template. --- packages/jsdoc/cli.js | 20 +++++++++++--------- packages/jsdoc/jsdoc.js | 9 ++------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/jsdoc/cli.js b/packages/jsdoc/cli.js index 63178b51..0c6c961a 100644 --- a/packages/jsdoc/cli.js +++ b/packages/jsdoc/cli.js @@ -145,7 +145,7 @@ module.exports = (() => { }; // TODO: docs - cli.runCommand = cb => { + cli.runCommand = () => { let cmd; const opts = env.opts; @@ -166,11 +166,13 @@ module.exports = (() => { cmd = cli.main; } - cmd().then(errorCode => { + return cmd().then(errorCode => { if (!errorCode && props.shouldExitWithError) { errorCode = 1; } - cb(errorCode); + + cli.logFinish(); + cli.exit(errorCode || 0); }); }; @@ -385,6 +387,7 @@ module.exports = (() => { }; cli.generateDocs = () => { + let message; const path = require('jsdoc/path'); const resolver = require('jsdoc/tutorial/resolver'); const taffy = require('taffydb').taffy; @@ -421,13 +424,12 @@ module.exports = (() => { return Promise.resolve(publishPromise); } else { - logger.fatal( - `${env.opts.template} does not export a "publish" function. ` + - 'Global "publish" functions are no longer supported.' - ); - } + message = `${env.opts.template} does not export a "publish" function. ` + + 'Global "publish" functions are no longer supported.'; + logger.fatal(message); - return Promise.resolve(); + return Promise.reject(new Error(message)); + } }; // TODO: docs diff --git a/packages/jsdoc/jsdoc.js b/packages/jsdoc/jsdoc.js index bc9d3f0f..bd2d701c 100755 --- a/packages/jsdoc/jsdoc.js +++ b/packages/jsdoc/jsdoc.js @@ -45,18 +45,13 @@ */ global.env = (() => require('./lib/jsdoc/env'))(); -(() => { +(async () => { const cli = require('./cli'); - function cb(errorCode) { - cli.logFinish(); - cli.exit(errorCode || 0); - } - cli.setVersionInfo() .loadConfig() .configureLogger() .logStart(); - cli.runCommand(cb); + await cli.runCommand(); })();