This repository has been archived on 2025-06-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
joeac.net-symfony/symfony/migrations/migrateBlog.js

48 lines
1.6 KiB
JavaScript
Executable File

const { glob, mkdir, readFile, writeFile } = require('node:fs/promises');
const readline = require('node:readline/promises');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
async function main() {
await mkdir('blog-migrated', { recursive: true });
if (glob('blog-migrated/*').length) {
const answer = await rl.question(
'blog-migrated destination folder must be empty before starting, delete contents now?',
);
if (!/^[yY]([eE][sS])?$/.exec(answer)) {
process.exit(0);
}
}
const files = glob('./blog/*.md');
const writeOps = [];
for await (const file of files) {
const fileContent = (await readFile(file)).toString();
const [firstDelimiterMatch, secondDelimiterMatch] = [...fileContent.matchAll(/^---$/gm)];
const frontMatter = fileContent.slice(
firstDelimiterMatch.index + 4, secondDelimiterMatch.index
);
const content = fileContent.slice(0, firstDelimiterMatch.index).concat(
fileContent.slice(secondDelimiterMatch.index + 4),
);
const indentedContent = content.trim().replaceAll(/^/gm, ' ');
const yamlContent = `${frontMatter}\ncontent: |\n${indentedContent}\n`;
const filename = file.replaceAll(/^.*blog\//g, 'blog-migrated/').replaceAll(/.md$/g, '.yaml')
writeOps.push(writeFile(filename, yamlContent));
}
await Promise.all(writeOps);
}
main().then(() => {
console.log('Done!')
process.exit(0);
}).catch((err) => {
throw err;
});