UNPKG

nodebook

Version:

Node.js • Apprendre par la pratique. Familiarisez-vous avec JavaScript, Node.js et l'écosystème de modules npm. Apprenez à concevoir et à déployer des *applications web* et des *outils en ligne de commande*.

104 lines (90 loc) 3.41 kB
'use strict' const pkg = require('../package.json'); const {join} = require('path'); const ora = require('ora'); const asciidoctor = require('@asciidoctor/core')(); const runnerExtension = require('asciidoctor-extension-interactive-runner'); const microtypoExtension = require('../src/asciidoctor-microtypography-french.js'); const bash$Extension = require('../src/asciidoctor-extension-bash-dollar.js'); const externalLinksAttributes = require('../src/asciidoctor-external-links-attributes.js'); const prismExtension = require('asciidoctor-prism-extension'); const MDNExtension = require('../src/asciidoctor-extension-mdn.js'); const hashScroll = require('../src/asciidoctor-toc-hash-scroll.js'); const styles = require('../src/asciidoctor-opendocument-styles.js'); const memoryLogger = asciidoctor.MemoryLogger.create(); require('asciidoctor-converter-opendocument')(asciidoctor, {styles}); require('@asciidoctor/docbook-converter')(); var DEFAULT_ATTRIBUTES = [ 'toc=left', 'toclevels=4', 'webfonts!', 'revdate!', 'nofooter', 'stylesheet=book.css', `stylesdir=${join(__dirname, '..', 'src')}`, 'linkattrs', 'lang=fr', 'env=ci', 'hide-uri-scheme', 'experimental', 'idprefix', 'source-highlighter=prism', 'prism-languages=apacheconf,bash,docker,http,ini,json,jsx,less,markdown,nginx,properties,sass,scss,typescript,tsx,yaml', 'prism-theme', `book-module=${pkg.name}`, `book-module-version=${pkg.version}`, 'toc-title=Table des matières', 'chapter-label=Chapitre', 'appendix-caption=Annexe', 'last-update-label=Dernière mise à jour', 'example-caption=Exemple', 'caution-caption=⚠️', 'important-caption=‼️', 'note-caption=💬', 'tip-caption=💡', 'warning-caption=🚨', 'table-caption=Tableau', 'untitled-label=Sans titre', 'mdn-caption-prefix=[RemarquePreTitre]#Documentation#', 'docinfo=shared', `docinfodir=${join(__dirname, '..', 'src')}`, ]; const BUILD_DIR = join(__dirname, '..', 'dist'); asciidoctor.LoggerManager.setLogger(memoryLogger); asciidoctor.SyntaxHighlighter.register('prism', prismExtension); asciidoctor.Extensions.register(microtypoExtension); asciidoctor.Extensions.register(runnerExtension); asciidoctor.Extensions.register(bash$Extension); asciidoctor.Extensions.register(externalLinksAttributes); asciidoctor.Extensions.register(MDNExtension); asciidoctor.Extensions.register(hashScroll); const builder = (backend, ext, attributes=DEFAULT_ATTRIBUTES) => { const spinner = ora({ interval: 30 }); return (SOURCE_FILE) => { const destinationFile = SOURCE_FILE.replace('.adoc', ext); const source = `${SOURCE_FILE} (${destinationFile})`; spinner.start(source); asciidoctor.convertFile(join(__dirname, '..', SOURCE_FILE), { to_file: join(BUILD_DIR, destinationFile), mkdirs: true, safe: 'unsafe', doctype: 'book', backend, attributes, }); spinner.succeed(); if (!memoryLogger.getMessages().length) { memoryLogger.getMessages().map(({message}) => { const lineno = message.getSourceLocation().getLineNumber(); spinner.warn(`${SOURCE_FILE}:${lineno}${message.getText()}`); }); memoryLogger.$clear(); } } } module.exports = builder; if (require.main === module) { const [,, BACKEND, EXTENSION, ...FILES] = process.argv; const build = builder(BACKEND, EXTENSION); FILES.forEach(build); }