// generates a readme file import * as _ from "lodash"; import * as prettier from "prettier"; import * as fs from "fs-extra"; // import * as path from "path"; import { generateBullets, generateTable, generateTOC, generateSchema, } from "../generators/markdown"; import { getFileContents, writeMyFile, getRelativePath, getRelativeProjectPath, } from "../../../lib/files"; const toc = require("markdown-toc"); export const generateReadMeFile = (content: any, outputPath: string) => { const templateFolder: string = getRelativeProjectPath( "./src/commands/scaffold/templates" ); getFileContents( `${templateFolder}/README.md.template`, (err: any, data: any) => { err; const compiled = _.template(data); const rmContent = compiled({ ...content, toc: generateTOC(), user_stories: _.has(content, "user_stories") ? generateBullets(content["user_stories"]) : "(N/A)", test_plan: _.has(content, "test_plan") ? generateTable(content["test_plan"]) : "(N/A)", screens: _.has(content, "screens") ? generateBullets(content["screens"]) : "(N/A)", acceptance_tests: _.has(content, "acceptance_tests") ? generateTable(content["acceptance_tests"]) : "(N/A)", components: { layouts: generateTable( _.filter( content["components"], (component) => component.type === "Layouts" ) ), containers: generateTable( _.filter( content["components"], (component) => component.type === "Containers" ) ), components: generateTable( _.filter( content["components"], (component) => component.type === "Components" ) ), schema: generateSchema( _.filter(content["components"], (comp) => comp.exists !== "Yes"), true ), }, database: generateSchema(content["database"]), api: generateSchema(content["api"], true), }); const tocContent = toc(rmContent).content; const withToc = rmContent.replace( "\n", tocContent ); const markdownContent = prettier.format(withToc, { parser: "markdown" }); // console.log(markdownContent); fs.ensureDir(getRelativePath(outputPath)).then(() => { writeMyFile( `${getRelativePath(outputPath)}/README.md`, markdownContent, () => true ); }); } ); };