Files
documentation/scripts/build-presentations.mjs
T

18 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {mkdir,copyFile,writeFile} from 'node:fs/promises';
import {slides} from '../presentations/less-prompting-more-shipping/slides.mjs';
const root='presentations/less-prompting-more-shipping';
const out=`static/${root}`;
await mkdir(`${out}/assets`,{recursive:true});
for(const [src,dest] of [['dist/reveal.js','reveal.js'],['dist/reveal.css','reveal.css'],['plugin/notes/notes.js','notes.js'],['LICENSE','REVEAL-LICENSE']]) await copyFile(`node_modules/reveal.js/${src}`,`${out}/assets/${dest}`);
for(const weight of [400,700,900]) await copyFile(`node_modules/@fontsource/lato/files/lato-latin-${weight}-normal.woff2`,`${out}/assets/lato-latin-${weight}-normal.woff2`);
await copyFile('node_modules/@fontsource/lato/LICENSE',`${out}/assets/LATO-LICENSE`);
await copyFile(`${root}/theme.css`,`${out}/theme.css`);
const esc=s=>s.replaceAll('&','&amp;').replaceAll('<','&lt;').replaceAll('>','&gt;').replaceAll('"','&quot;');
await writeFile(`${out}/index.html`,`<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="The AI Architect’s First Six Months: a proposed, evidence-led strategy."><title>Less Prompting, More Shipping | Eldorado</title><link rel="icon" href="data:,"><link rel="stylesheet" href="./assets/reveal.css"><link rel="stylesheet" href="./theme.css"></head><body>
<nav class="toolbar" aria-label="Presentation tools"><a href="../../">Portal</a><a href="../../strategy/target-operating-model/">Strategy</a><button id="overview" type="button">Overview</button><button id="notes" type="button">Notes</button><button id="fullscreen" type="button">Fullscreen</button><a href="?print-pdf">Print</a><span class="help">← → navigate · Esc overview · S notes · F fullscreen</span></nav>
<div class="reveal deck"><div class="slides">${slides.map((s,i)=>`<section id="${s.id}" class="${s.kind}" data-timing="${s.minutes*60}" ${s.kind==='dark'?'data-background-color="#1f1f29"':''}><p class="eyebrow">ELDORADO / ${i===17?'DISCUSSION':i===18?'REFERENCE':'AI STRATEGY'}</p><${i?'h2':'h1'}>${s.title}</${i?'h2':'h1'}>${s.body}<aside class="notes"><p><strong>${s.minutes} minutes.</strong> ${esc(s.notes)}</p><p>Sources: ${esc(s.sources.join('; '))}.</p></aside></section>`).join('\n')}</div></div>
<script src="./assets/reveal.js"></script><script src="./assets/notes.js"></script><script src="./runtime.js"></script></body></html>`);
await copyFile(`${root}/runtime.js`,`${out}/runtime.js`);
await writeFile(`${out}/source-map.json`,JSON.stringify({version:'1.0.0',strategyRevision:'fcaa84f3bf9058f4ede0a097d16d0e3571590a6b',assignment:'AI_Architect_Test_Task.pdf',talkMinutes:slides.slice(0,17).reduce((a,s)=>a+s.minutes,0),discussionMinutes:15,slides:slides.map(({id,title,minutes,sources},i)=>({number:i+1,id,title,minutes,sources}))},null,2));
console.log(`Built ${slides.length} local Reveal.js slides at ${out}`);