UNPKG

@themost/cli

Version:
96 lines (86 loc) 3.38 kB
// MOST Web Framework Copyright (c) 2017-2022, THEMOST LP All rights reserved const ModelGenerator = require('../../modeler/modeler').ModelGenerator; const getConfiguration = require('../../util').getConfiguration; const path = require('path'); const Table = require('easy-table'); const _ = require('lodash'); module.exports.command = 'info <model>'; module.exports.desc = 'Outputs model definition'; module.exports.builder = function builder(yargs) { return yargs; }; module.exports.handler = function (argv) { // get options let options = getConfiguration(); // get output directory let outDir = path.resolve(process.cwd(), options.base, 'config/models/'); const generator = new ModelGenerator(); function getFieldsForPrint(fields) { return _.map(fields, function(x) { return { name: x.name, description: _.truncate(x.description, { length:32 }), type: x.type } }); } function getFields(generator, name) { return generator.getModel(name).then( function(model) { if (model.implements) { return getFields(generator, model.implements).then( function(implementedFields) { const res = _.forEach(implementedFields, function(x) { if (x.from == null) { x.from = model.implements; } }); res.push.apply(res, getFieldsForPrint(model.fields)); return Promise.resolve(res); }); } else if (model.inherits) { return getFields(generator, model.inherits).then( function(inheritedFields) { const res = _.forEach(inheritedFields, function(x) { if (x.from == null) { x.from = model.inherits; } }); res.push.apply(res, getFieldsForPrint(model.fields)); return Promise.resolve(res); }); } else { return Promise.resolve(getFieldsForPrint(model.fields)); } }); } return generator.getModel(argv.model).then( function(model) { if (model == null) { console.log('INFO','The specifiec model cannot be found.'); return; } // print model attributes console.log(''); console.log('Properties'); console.log('--------------'); const modelToPrint = { name: model.name, description: model.description }; if (model.inherits) { modelToPrint.inherits = model.inherits; } if (model.implements) { modelToPrint.implements = model.implements; } console.log(Table.print(modelToPrint)); getFields(generator, argv.model).then(function(fields) { // print model attributes console.log(''); console.log('Fields'); console.log('--------------'); console.log(Table.print(fields)); }); }); }