puml2code
Version:
PlantUML to code generator
39 lines (32 loc) • 1.07 kB
JavaScript
// native modules
const { join } = require('path');
const { writeFile, mkdir } = require('fs');
// 3rd party modules
const Promise = require('bluebird');
const _ = require('lodash');
class Output {
constructor(files, { logger }) {
this.logger = logger;
this._files = files;
}
print(printer = console.log) { // eslint-disable-line no-console
_.each(this._files, (content, file) => {
this.logger.info(`${file}:`);
printer(`${content}`);
});
}
static mkdir(path) {
return new Promise(
(resolve, reject) => mkdir(path,
err => ((err && err.code !== 'EEXIST') ? reject(err) : resolve())),
);
}
async save(path) {
await Output.mkdir(path); // ensure that folder exists or create it
this.logger.debug(`Write files ${_.map(this._files, (content, file) => file)} to path: ${path}`);
const writer = (content, file) => Promise.fromCallback(cb => writeFile(join(path, file), content, cb));
const pendings = _.map(this._files, writer);
return Promise.all(pendings);
}
}
module.exports = Output;