// Generate components import * as _ from "lodash"; import * as fs from "fs-extra"; import { getRelativePath, getRelativeProjectPath } from "../../lib/files"; import { generateComponentFolders, generateComponentTestTsx, generateComponentIndexTs, generateComponentTsx, generateComponentMdx, generateComponentStoriesTsx, } from "./generators/components"; export const generateComponents = (content: any, outputPath: string) => { // grab just components (in not modules) const { name, components } = content; const templateFolder: string = getRelativeProjectPath( "./src/commands/scaffold/templates" ); const componentFolder: string = getRelativePath(outputPath) + "/components"; const filteredComponents = _.filter( components, (component) => component.exists === "No" && component.package === "No" ); // create a components folder fs.ensureDir(componentFolder); // create folders for each component generateComponentFolders({ filteredComponents, componentFolder, templateFolder, }); // generate component tests generateComponentTestTsx({ name, filteredComponents, componentFolder, templateFolder, }); // generate component index.ts generateComponentIndexTs({ filteredComponents, componentFolder, templateFolder, }); // generate component main code generateComponentTsx({ filteredComponents, componentFolder, templateFolder, }); // generate component mdx code generateComponentMdx({ filteredComponents, componentFolder, templateFolder, }); // generate component story code generateComponentStoriesTsx({ filteredComponents, componentFolder, templateFolder, name, type: "Components", }); return content; };