quilon
Version:
Generate ERDs from your entity files automagically
53 lines (52 loc) • 2.79 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GenerateCommand = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const filesystem_1 = require("../../utils/filesystem");
const AbstractCommand_1 = require("../AbstractCommand");
const Driver_1 = require("../../drivers/Driver");
const config_1 = require("../../global/config");
const Builder_1 = require("../../builders/Builder");
class GenerateCommand extends AbstractCommand_1.AbstractCommand {
execute() {
return __awaiter(this, void 0, void 0, function* () {
const configFile = filesystem_1.FileSystemUtils.readAndParseJSONFile(config_1.GlobalConfig.CONFIG_PATH);
const { entities, outputDir } = configFile;
if (!entities || entities.length === 0) {
throw new Error("No entities found");
}
const driver = new Driver_1.Driver();
const builder = new Builder_1.Builder();
for (const directory of entities) {
const fileNamePattern = driver.getFileNamePattern();
const files = yield filesystem_1.FileSystemUtils.readFilesFromDirectory(directory, fileNamePattern);
for (const file of files) {
driver.setFilePath(file);
const parsedEntity = driver.parseEntity();
builder.appendEntity(parsedEntity);
}
}
const fileName = path_1.default.join(outputDir, `${config_1.GlobalConfig.DIAGRAM_FILE_NAME}.${builder.fileExtension}`);
const diagram = builder.getDiagram();
if (!fs_1.default.existsSync(outputDir)) {
fs_1.default.mkdirSync(outputDir);
}
fs_1.default.writeFileSync(fileName, diagram);
console.log(`ERD successfully created!`);
});
}
}
exports.GenerateCommand = GenerateCommand;