const fs = require('fs'); const path = require('path'); const { promisify } = require('util'); const extract = require('./extract'); // Promisified fs functions const readdirAsync = promisify(fs.readdir); const readFileAsync = promisify(fs.readFile); const writeFileAsync = promisify(fs.writeFile); // Source and destination paths const markdownPath = path.resolve(__dirname, '../markdown'); const jsonPath = path.resolve(__dirname, '../../front/src/resources/markdown.json'); async function run(filterFunc) { const allFiles = await readdirAsync(markdownPath); const tutoFiles = allFiles.filter(filterFunc); const promises = tutoFiles.map(async tuto => { const tutoPath = path.join(markdownPath, tuto); const buf = await readFileAsync(tutoPath); const md = buf.toString(); console.log(md.split('\n').shift()); try { return extract(md); } catch (err) { console.log(err.message); } }); const tutos = await Promise.all(promises); const json = JSON.stringify(tutos); await writeFileAsync(jsonPath, json); process.exit(); } const filterFunc = f => f.startsWith('tutor'); run(filterFunc);