UNPKG

@citadelgroup/reporting-cli

Version:

Command line interface to develop custom reports for LeanIX EAM

38 lines (32 loc) 1.44 kB
import * as chalk from 'chalk'; import { render } from 'ejs'; import * as inquirer from 'inquirer'; import { sync as mkdirpSync } from 'mkdirp'; import * as fs from 'fs'; import * as path from 'path'; import { getProjectDirectoryPath } from './path.helpers'; export class TemplateExtractor { public extractTemplateFiles(baseTemplateDir: string, answers: inquirer.Answers): void { console.log(chalk.green('Extracting template files...')); this.extractTemplateDir(baseTemplateDir, baseTemplateDir, answers); } private extractTemplateDir(templateDir: string, baseTemplateDir: string, answers: inquirer.Answers) { fs.readdirSync(templateDir).forEach((file) => { const filePath = path.resolve(templateDir, file); const isDir = fs.lstatSync(filePath).isDirectory(); if (isDir) { this.extractTemplateDir(filePath, baseTemplateDir, answers); } else { this.extractTemplateFile(filePath, baseTemplateDir, answers); } }); } private extractTemplateFile(sourcePath: string, baseTemplateDir: string, answers: inquirer.Answers) { const destPath = sourcePath.replace(baseTemplateDir, getProjectDirectoryPath()).replace(/\.ejs$/, ''); console.log(sourcePath, destPath); const template = fs.readFileSync(sourcePath).toString('utf-8'); const result = render(template, answers); mkdirpSync(path.dirname(destPath)); fs.writeFileSync(destPath, result); } }