UNPKG

jmms

Version:

Jmms cli tools, Jmms is a java meta-micro-service framework

65 lines (53 loc) 2.24 kB
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); } }); } };