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, ) }, ], } }