UNPKG

@mongez/gnz

Version:

Generator Z, the next generation of scaffolding tools.

27 lines (26 loc) 1.75 kB
import {ensureDirectory}from'@mongez/fs';import {ltrim,toCamelCase}from'@mongez/reinforcements';import chalk from'chalk';import path from'path';import {cwd}from'process';import'os';import'eslint';import'prettier';import {showSpinner}from'../../utils/show-spinner.js';import {generateTypesFile,generateGeneratorTemplateFile,generateGeneratorFile,generateIndexFile}from'./template.js';async function generate(optionsList) { // each generator has the following files: // types.ts // generator.ts // index.ts // template.ts optionsList.saveTo = optionsList.saveTo + "/" + optionsList.name; ensureDirectory(optionsList.saveTo); optionsList.name = ltrim(ltrim(optionsList.name, "generate-"), "generate"); optionsList.camelCaseName ??= toCamelCase(optionsList.name) + "Generator"; optionsList.name = "generate-" + optionsList.name; const spinner = showSpinner("Loading..."); console.log(`Generating ${chalk.yellow(`${optionsList.name}`)} generator...`); spinner.update(`Generating ${chalk.yellow("types.ts")} file...`); await generateTypesFile(optionsList); spinner.update(`Generating ${chalk.yellow("generator.ts")} file...`); await generateGeneratorTemplateFile(optionsList); spinner.update(`Generating ${chalk.yellow("index.ts")} file...`); await generateGeneratorFile(optionsList); spinner.update(`Generating ${chalk.yellow("generate-content.ts")} file...`); await generateIndexFile(optionsList); spinner.stop(); console.log("Generator ", chalk.green(optionsList.name), "has been generated in", chalk.magenta(path .relative(path.resolve(cwd()), optionsList.saveTo) .replaceAll("\\", "/"))); }export{generate};//# sourceMappingURL=generator.js.map