UNPKG

haar

Version:

Cli tool for building and displaying plant-uml diagrams

55 lines (45 loc) 1.55 kB
'use strict' const config = require('./../config') const fs = require('fs-extra') const globby = require('globby') const plantuml = require('node-plantuml') const path = require('path') const _ = require('lodash') const async = require('async') const logger = require('./../infrastructure').logger const generateDiagram = (rootDirectory, diagramPath, format, done) => { logger.info(`Generating ${format} for diagram ${diagramPath}`) let fileName = path.basename(diagramPath, '.puml') let outputPath = `${rootDirectory}/${config.assetDirectory}/${fileName}.${format}` let gen = plantuml.generate(diagramPath, { format: format }) let chunks = [] gen.out.on('data', (data) => chunks.push(data)) gen.out.on('end', () => { const buffer = Buffer.concat(chunks) logger.info(`Saving image ${outputPath}`) fs.outputFile(outputPath, buffer, done) }) } const generateDiagrams = (rootDirectory, diagramPath, done) => { const generators = config.formats.map((format) => { return _.curry(generateDiagram)(rootDirectory, diagramPath, format) }) async.parallel(generators, done) } const generateDiagramsInFolder = (directoryData, done) => { const diagramFiles = globby.sync([`./${directoryData.path}/${config.diagramDirectory}/*.puml`]) async.eachLimit( diagramFiles, 3, _.curry(generateDiagrams)(directoryData.path), done ) } const generateAllDiagrams = (done) => { async.eachSeries( config.directories, generateDiagramsInFolder, done ) } module.exports = generateAllDiagrams