Files
Odoo-Wiki/task.js
T

88 lines
2.0 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]
if (!firstArg || ['all', 'frontmatter'].indexOf(firstArg) >= 0) {
// log
console.log('Update frontmatter ...')
// loop all markdown files
loopMdFiles().forEach((file) => {
// Read file and split into lines
let lines = fs.readFileSync(file, 'utf8').split(/\r?\n/)
// Find title
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.')
}