forest-cli
Version:
The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.
61 lines • 6.05 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("../../utils/handlebars/loader");
class AbstractDumper {
constructor({ assertPresent, fs, logger, chalk, constants, mkdirp, Handlebars }) {
assertPresent({
fs,
logger,
chalk,
constants,
mkdirp,
Handlebars,
});
this.fs = fs;
this.logger = logger;
this.chalk = chalk;
this.constants = constants;
this.mkdirp = mkdirp;
this.Handlebars = Handlebars;
}
writeFile(relativeFilePath, content) {
const fileName = `${this.projectPath}/${relativeFilePath}`;
if (this.fs.existsSync(fileName)) {
this.logger.log(` ${this.chalk.yellow('skip')} ${relativeFilePath} - already exists.`);
return;
}
this.fs.writeFileSync(fileName, content);
this.logger.log(` ${this.chalk.green('create')} ${relativeFilePath}`);
}
copyHandleBarsTemplate(source, target, context) {
const templatePath = `${__dirname}/templates/${this.templateFolder}/${source}`;
if (context && Object.keys(context).length > 0) {
const handlebarsTemplate = () => this.Handlebars.compile(this.fs.readFileSync(templatePath, 'utf-8'), { noEscape: true });
return this.writeFile(target, handlebarsTemplate()(context));
}
return this.writeFile(target, this.fs.readFileSync(templatePath, 'utf-8'));
}
// Copy every file from a template sub-directory into the generated project,
// creating the target directory. Used for sidecar assets (e.g. workflow BPMN)
// that ship alongside a template file. No-op if the source directory is absent.
copyTemplateDirectory(source, target) {
const sourcePath = `${__dirname}/templates/${this.templateFolder}/${source}`;
if (!this.fs.existsSync(sourcePath))
return;
const files = this.fs.readdirSync(sourcePath);
if (files.length === 0)
return;
this.fs.mkdirSync(`${this.projectPath}/${target}`, { recursive: true });
files.forEach(file => this.copyHandleBarsTemplate(`${source}/${file}`, `${target}/${file}`));
}
async dump(dumperConfig, schema) {
const cwd = this.constants.CURRENT_WORKING_DIRECTORY;
this.projectPath = dumperConfig.appConfig.appName
? `${cwd}/${dumperConfig.appConfig.appName}`
: cwd;
await this.mkdirp(this.projectPath);
await this.createFiles(dumperConfig, schema);
}
}
exports.default = AbstractDumper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZHVtcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2R1bXBlcnMvYWJzdHJhY3QtZHVtcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EseUNBQXVDO0FBRXZDLE1BQThCLGNBQWM7SUFpQjFDLFlBQXNCLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1FBQ3ZGLGFBQWEsQ0FBQztZQUNaLEVBQUU7WUFDRixNQUFNO1lBQ04sS0FBSztZQUNMLFNBQVM7WUFDVCxNQUFNO1lBQ04sVUFBVTtTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUlTLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPO1FBQzNDLE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBRTNELElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxnQkFBZ0Isb0JBQW9CLENBQUMsQ0FBQztZQUN4RixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVTLHNCQUFzQixDQUM5QixNQUFjLEVBQ2QsTUFBYyxFQUNkLE9BQWlDO1FBRWpDLE1BQU0sWUFBWSxHQUFHLEdBQUcsU0FBUyxjQUFjLElBQUksQ0FBQyxjQUFjLElBQUksTUFBTSxFQUFFLENBQUM7UUFFL0UsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFLENBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRTNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLDhFQUE4RTtJQUM5RSxnRkFBZ0Y7SUFDdEUscUJBQXFCLENBQUMsTUFBYyxFQUFFLE1BQWM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxTQUFTLGNBQWMsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUU1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBb0IsRUFBRSxNQUFZO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU87WUFDL0MsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQzVDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFUixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBMUZELGlDQTBGQyJ9