Last active
December 11, 2020 10:51
-
-
Save balazsorban44/5ce8c50c3e0c8f06388a577e130ce269 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import fs from "fs" | |
import path from "path" | |
import chalk from "chalk" | |
const getDirectories = (source ) => { | |
const dirents = fs.readdirSync(source, { withFileTypes: true }) | |
return dirents | |
.filter( | |
(dirent) => | |
dirent.isDirectory() && !["shared", "utils"].includes(dirent.name) | |
) | |
.map((dirent) => dirent.name) | |
} | |
const calculatorsPath = path.join(process.cwd(), "calculators") | |
const calculators = getDirectories(calculatorsPath) | |
const components = [] | |
calculators.forEach((calculator) => { | |
const file = `import { NextPage } from "next/app" | |
import CalculatorComponent from "calculators/${calculator}" | |
const Calculator = CalculatorComponent as NextPage | |
Calculator.layout = "none" | |
export default Calculator` | |
const calculatorPath = path.join(process.cwd(), `pages/calculators`, `${calculator}.ts`) | |
fs.writeFileSync(calculatorPath, file) | |
components.push(` ${calculator}: dynamic(() => import("calculators/${calculator}")),`) | |
}) | |
const file = ` | |
import dynamic from "next/dynamic" | |
export const components = { | |
${components.join("\n")} | |
}` | |
fs.writeFileSync(path.join(calculatorsPath, "components.ts"), file) | |
console.log(`${chalk.cyan(chalk.bold("info"))} - generated calculator files`) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment