82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
const fs = require('fs')
|
||
var path = require('path')
|
||
|
||
/* arguments:
|
||
all
|
||
frontmatter
|
||
*/
|
||
|
||
// settings
|
||
const ignoreFiles = ['_navbar.md', '_sidbar.md']
|
||
|
||
function loopMdFiles() {
|
||
return fs.readdirSync(__dirname).filter(file => (file.slice(-3) === '.md') && (ignoreFiles.indexOf(file) != 0))
|
||
}
|
||
|
||
// Build vars
|
||
var files = []
|
||
var args = process.argv.slice(2);
|
||
var firstArg = args[0]
|
||
let title = null
|
||
for (let line of lines) {
|
||
if (line.startsWith('# ') || line.startsWith('## ') || line.startsWith('### ')) {
|
||
// Get title
|
||
title = line.replace('### ','').replace('## ','').replace('# ','')
|
||
break
|
||
}
|
||
}
|
||
|
||
// Find title
|
||
let content = []
|
||
let frontmatter = []
|
||
let isFrontmatter = false
|
||
for (let line of lines) {
|
||
if (line.startsWith('---')) {
|
||
isFrontmatter = !isFrontmatter
|
||
}
|
||
if (isFrontmatter && !line.startsWith('---')) {
|
||
frontmatter.push(line)
|
||
}
|
||
if (!isFrontmatter && !line.startsWith('---')) {
|
||
content.push(line)
|
||
}
|
||
}
|
||
|
||
// Update frontmatter title
|
||
frontmatterTitle = 'title: ' + title
|
||
let hasFrontmatterTitle = false
|
||
for (let i in frontmatter) {
|
||
line = frontmatter[i]
|
||
if (line.startsWith('title: ')) {
|
||
hasFrontmatterTitle = true
|
||
frontmatter[i] = frontmatterTitle
|
||
}
|
||
}
|
||
if (!hasFrontmatterTitle) {
|
||
frontmatter.unshift(frontmatterTitle)
|
||
}
|
||
|
||
// add footer
|
||
new_content = ['---'].concat(frontmatter, ['---'], content).join('\n')
|
||
|
||
// Write content to file
|
||
fs.writeFileSync(file, new_content, 'utf8')
|
||
})
|
||
|
||
// log
|
||
console.log('Updating frontmatter.')
|
||
}
|