const fs = require('node:fs') const prettier = require('prettier') /** * @param {import('plop').NodePlopAPI} plop * @returns {import('node-plop').PlopGeneratorConfig} */ exports.languageGenerator = (plop) => { return { description: 'Add a new language for translations', prompts: [ { type: 'input', name: 'locale', message: 'locale' } ], actions: [ { type: 'addMany', base: 'locales/en', destination: 'locales/{{locale}}', templateFiles: 'locales/en/**' }, async (answers) => { process.chdir(plop.getPlopfilePath()) const data = JSON.parse( await fs.promises.readFile('i18n.json', { encoding: 'utf-8' }) ) data.locales.push(answers.locale) const formatted = prettier.format(JSON.stringify(data, null, 2), { filepath: 'i18n.json' }) await fs.promises.writeFile('i18n.json', formatted, { encoding: 'utf-8' }) return plop.renderString( ` Added '{{locale}}' to the 'locales' array inside 'i18n.json' Don't forget to add the flag at 'public/images/svg/languages/{{locale}}.svg' `, answers ) } ] } }