jmms
Version:
Jmms cli tools, Jmms is a java meta-micro-service framework
65 lines (53 loc) • 2.24 kB
JavaScript
const _ = require('lodash');
const utils = require('../../utils');
const log = require('../../log');
const chalk = require('chalk');
const fs = require('fs');
const path = require('path');
const BaseGenerator = require('../../base');
module.exports = class extends BaseGenerator {
constructor(args, opts) {
super(args, opts);
}
generateAndExit(){
const db = this.app.config.db;
if(_.isEmpty(db)){
log.error('Db must be configured at config.json');
process.exit(1);
}
const opts = this.options;
this._runJavaCli( (cli) => { this._gen(cli, db, opts) });
}
_gen(cli, db, opts) {
const params = {};
if(opts['name']) {
params['name'] = opts['name'];
}
if(opts['full'] === true) {
params['full'] = true;
}
cli.exec('schema.gen', params, (err, files) => {
if(err) {
return;
}
if(_.isEmpty(files) || files.empty === true) {
log.info("Db schmea is empty, exit!");
process.exit(0);
}
//path, json, sql
const root = path.join(process.cwd(), 'schema', files.path);
log.info(`Generate full schema files [${files.fullJson.filename},${files.fullSql.filename}] at ${root}`);
const fullJsonFile = path.join(root, files.fullJson.filename);
const fullSqlFile = path.join(root, files.fullSql.filename);
fs.writeFileSync(fullJsonFile, JSON.stringify(JSON.parse(files.fullJson.content), null, 4));
fs.writeFileSync(fullSqlFile, files.fullSql.content);
if(files.incrJson) {
log.info(`Generate incr schema files [${files.incrJson.filename},${files.incrSql.filename}] at ${root}`);
const incrJsonFile = path.join(root, files.incrJson.filename);
const incrSqlFile = path.join(root, files.incrSql.filename);
fs.writeFileSync(incrJsonFile, JSON.stringify(JSON.parse(files.incrJson.content), null, 4));
fs.writeFileSync(incrSqlFile, files.incrSql.content);
}
});
}
};