From: Dan Allen Date: Thu, 16 Apr 2020 11:37:38 +0000 (-0600) Subject: show relative path of template that caused handlebars error X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=95fcd0fc2ce6502f881dd2cf3e0c283200385be5;p=working%2Feg-antora.git show relative path of template that caused handlebars error --- diff --git a/gulp.d/tasks/build-preview-pages.js b/gulp.d/tasks/build-preview-pages.js index 79a67e0..27f3854 100644 --- a/gulp.d/tasks/build-preview-pages.js +++ b/gulp.d/tasks/build-preview-pages.js @@ -18,7 +18,7 @@ const ASCIIDOC_ATTRIBUTES = { 'source-highlighter': 'highlight.js', } -module.exports = (src, previewSrc, previewDest, sink = () => map()) => () => +module.exports = (src, previewSrc, previewDest, sink = () => map()) => (done) => Promise.all([ loadSampleUiModel(previewSrc), toPromise( @@ -52,11 +52,16 @@ module.exports = (src, previewSrc, previewDest, sink = () => map()) => () => uiModel.page.contents = Buffer.from(doc.convert()) } file.extname = '.html' - file.contents = Buffer.from(layouts.get(uiModel.page.layout)(uiModel)) - next(null, file) + try { + file.contents = Buffer.from(layouts.get(uiModel.page.layout)(uiModel)) + next(null, file) + } catch (e) { + next(transformHandlebarsError(e, uiModel.page.layout)) + } }) ) .pipe(vfs.dest(previewDest)) + .on('error', (e) => done) .pipe(sink()) ) @@ -115,6 +120,13 @@ function resolvePageURL (spec, context = {}) { if (spec) return '/' + (spec = spec.split(':').pop()).slice(0, spec.lastIndexOf('.')) + '.html' } +function transformHandlebarsError ({ message, stack }, layout) { + const m = stack.match(/^ *at Object\.ret \[as (.+?)\]/m) + const err = new Error(`${message} in UI template src/${m ? 'partials/' + m[1] : 'layouts/' + layout}.hbs`) + err.stack = [err.toString()].concat(stack.substr(`Error: ${message}\n`.length)).join('\n') + return err +} + function toPromise (stream) { return new Promise((resolve, reject, data = {}) => stream