const yaml = require('js-yaml'); const fs = require('fs'); const path = require('path'); const writeOption = { flag: 'w' }; const firebaseData = require('./firebase-data.json'); const generateSessionData = (id, session) => { const frontMatter = {id, ...session}; const {type} = frontMatter; delete frontMatter.description; delete frontMatter.type; frontMatter.talkType = type; return `--- ${yaml.safeDump(frontMatter, {skipInvalid: true})} --- ${session.description} `; }; const generateSessionName = (id, title) => { const name = title .normalize('NFD') .replace(/[\u0300-\u036f]/g, "") .replace(/[^a-z0-9]/gi, '_') .toLowerCase(); return `${id}_${name}.md`; }; Object.entries(firebaseData.sessions) .filter(([_, session]) => !session.isBreak) .map(([id, session]) => ([ generateSessionName(id, session.title), generateSessionData(parseInt(id, 10), session)])) .forEach(([filename, data]) => { const dest = path.join(__dirname, `../content/talks/${filename}`); console.log('Write to', dest); fs.writeFileSync(dest, data, writeOption); });