Output correct error message when start page isn't found (not 'charAt' of undefined)
If Antora can't find index.adoc
in a component's ROOT module, or in any of the component's subsequent modules, and the start_page
key is not assigned a value in the component's descriptor file, the following error and stacktrace is output into the terminal:
apex@nova demo $ antora site.yml
error: Cannot read property 'charAt' of undefined
apex@nova demo $ antora site.yml --stacktrace
TypeError: Cannot read property 'charAt' of undefined
at Object.module.exports (helpers/relativize.js:9:17)
at eval (<anonymous>:9:82)
at prog (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:221:12)
at execIteration (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js:51:19)
at Object.<anonymous> (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js:61:13)
at eval (<anonymous>:10:31)
at prog (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:221:12)
at execIteration (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js:51:19)
at Object.<anonymous> (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js:61:13)
at Object.eval (<anonymous>:10:31)
at main (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:175:32)
at Object.ret (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:178:12)
at Object.ret [as navigation-explore] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:526:21)
at Object.invokePartialWrapper [as invokePartial] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:72:46)
at Object.eval (<anonymous>:7:28)
at main (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:175:32)
at Object.ret (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:178:12)
at Object.ret [as navigation] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:526:21)
at Object.invokePartialWrapper [as invokePartial] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:72:46)
at Object.eval (<anonymous>:6:28)
at main (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:175:32)
at Object.ret (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:178:12)
at Object.ret [as main] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:526:21)
at Object.invokePartialWrapper [as invokePartial] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:72:46)
at Object.eval (<anonymous>:18:28)
at main (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:175:32)
at Object.ret (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/runtime.js:178:12)
at Object.ret [as default] (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:526:21)
at composePage (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/node_modules/@antora/page-composer/lib/create-page-composer.js:79:48)
at pages.reduce (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/lib/site-generator.js:39:5)
at Array.reduce (<anonymous>:null:null)
at generateSite (/home/apex/.nvm/versions/node/v8.9.3/lib/node_modules/@antora/site-generator-default/lib/site-generator.js:38:9)
at <anonymous>:null:null
at process._tickCallback (internal/process/next_tick.js:188:7)
CharAt
doesn't tell us
Done criteria:
- Output error message when a component's start page can't be identified
- Message should inform user that start page can't be identified
- Message should tell user what component is missing a start page
- If a page is explicitly set via
start_page
but that file isn't found (i.e., say they misspelled the filename in antora.yml) return a message specifying that the start page file in component X namedname-of-file.adoc
can't be found (or something to that affect)
- Add any additional tests if needed
Question: Does a component's start page have to be in that component's repo(s) or could it belong to another component? If yes, what would that value you look like?
Edited by Dan Allen