const fs = require('fs') const inquirer = require('inquirer') const dedent = require('dedent') const genFrontMatter = (answers) => { let d = new Date() const date = [ d.getFullYear(), ('0' + (d.getMonth() + 1)).slice(-2), ('0' + d.getDate()).slice(-2), ].join('-') var tagArray = answers.tags.split(',') tagArray.forEach((tag, index) => (tagArray[index] = tag.trim())) const tags = "'" + tagArray.join("','") + "'" const frontMatter = dedent`--- title: ${answers.title ? answers.title : 'Untitled'} date: '${date}' tags: [${answers.tags ? tags : ''}] draft: ${answers.draft === 'yes' ? true : false} summary: ${answers.summary ? answers.summary : ' '} images: [] --- ` return frontMatter } inquirer .prompt([ { name: 'title', message: 'Enter post title:', type: 'input', }, { name: 'extention', message: 'Choose post extension:', type: 'list', choices: ['mdx', 'md'], }, { name: 'summary', message: 'Enter post summary:', type: 'input', }, { name: 'draft', message: 'Set post as draft?', type: 'list', choices: ['yes', 'no'], }, { name: 'tags', message: 'Any Tags? Separate them with , or leave empty if no tags.', type: 'input', }, ]) .then((answers) => { // Remove special characters and replace space with - const fileName = answers.title .toLowerCase() .replace(/[^a-zA-Z0-9 ]/g, '') .replace(/ /g, '-') .replace(/-+/g, '-') const frontMatter = genFrontMatter(answers) const filePath = `data/blog/${fileName ? fileName : 'untitled'}.${ answers.extention ? answers.extention : 'md' }` fs.writeFile(filePath, frontMatter, { flag: 'wx' }, (err) => { if (err) { throw err } else { console.log(`Blog post generated successfully at ${filePath}`) } }) }) .catch((error) => { if (error.isTtyError) { console.log("Prompt couldn't be rendered in the current environment") } else { console.log('Something went wrong, sorry!') } })