-
Notifications
You must be signed in to change notification settings - Fork 2
/
markdownBuilder.js
37 lines (31 loc) · 977 Bytes
/
markdownBuilder.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const fs = require('fs')
const path = require('path')
const mustache = require('mustache')
const templates = require('./templates')
function markdownBuilder(books, outputPath = '') {
console.log(`Writing markdown: ${books.length} files`)
books.map((book, index) => {
console.log(`${index + 1}. ${book.title}`)
var fileContent = mustache.render(templates.bookTemplate, book)
let fileName = `${book.title
.replace(':', '')
.replace(/\W+/g, '-')
.toLowerCase()}.md`
try {
var filePath = path.join(outputPath, fileName)
ensureDirectoryExistence(filePath)
fs.writeFileSync(filePath, fileContent)
} catch (error) {
console.log('ERROR WRITING = ', error.message)
}
})
}
function ensureDirectoryExistence(filePath) {
var dirname = path.dirname(filePath)
if (fs.existsSync(dirname)) {
return true
}
ensureDirectoryExistence(dirname)
fs.mkdirSync(dirname)
}
module.exports = markdownBuilder