import * as _ from "lodash"; import * as fs from "fs-extra"; import { generateTypeBlock, generateMethodBlock //generatePropBlock } from "../classBlocks"; export const generateComponentTsx = (data: any) => { const { filteredComponents, componentFolder, templateFolder } = data; fs.readFile( `${templateFolder}/components/component.template/Component.tsx.template`, "utf8", (err, data) => { if (err) return console.log(err); // loop over array of components _.forEach(filteredComponents, component => { // grab [name] from the item in the loop // grab [description] from the item in the loop const { name, description, schema } = component; // generate [typeBlock] const typeBlock = generateTypeBlock( _.filter(schema, s => s.schema_type === "prop") ); // methodBlock const methodBlock = generateMethodBlock(schema, true); // propBlock // const propBlock = generatePropBlock(schema); // pass in [name], [description], [typeBlock], [methodBlock], [propBlock] to component.template/Compopnent.tsx.template const componentTsx = _.template(data)({ name, description, typeBlock, methodBlock }); // save result to {outFolder}/components/[Name]/[Name].tsx fs.outputFile(`${componentFolder}/${name}/${name}.tsx`, componentTsx); }); } ); };