You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
5.6 KiB

4 years ago
"use strict";
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const program = require("commander");
const path = require("path");
const fs = require("fs-extra");
const debugLog = require("./debugLog");
const scan = require("./scan");
const utils_1 = require("./utils");
const start_1 = require("./scripts/start");
const packageFilePath = path.join(__dirname, '..', 'package.json');
const packageInfo = JSON.parse(fs.readFileSync(packageFilePath, 'utf8'));
const currentVersion = packageInfo.version;
program.version(currentVersion).usage('[命令] [配置项]');
program.description('powerful api code generator');
function assert(expression, message) {
if (!expression) {
debugLog.error(message);
process.exit(1);
}
}
(function () {
return __awaiter(this, void 0, void 0, function* () {
try {
const manager = yield utils_1.createManager();
program
.command('start')
.description('pont配置文件生成')
.action(() => {
start_1.generatePontConfig();
});
program
.command('check')
.description('检测 api-lock.json 文件')
.action(() => __awaiter(this, void 0, void 0, function* () {
debugLog.info('api-lock.json 文件检测中...');
const localDatas = yield manager.readLockFile();
try {
if (localDatas.length > 1) {
assert(localDatas.every(data => !!data.name), '多数据源每个数据源应该有 "name"');
}
localDatas.forEach(data => {
data.baseClasses.forEach(base => {
assert(!!base.name, `描述为 ${base.description} 的类没有"name"属性`);
base.properties.forEach(prop => {
assert(!!prop.name, `${base.name} 类的某个属性没有 "name" 属性`);
});
});
data.mods.forEach(mod => {
assert(!!mod.name, `描述为 ${mod.description} 的模块没有 "name" 属性`);
mod.interfaces.forEach(inter => {
assert(!!inter.name, `${mod.name} 模块的某个接口没有 "name" 属性`);
inter.parameters.forEach(param => {
assert(!!param.name, `${mod.name} 模块的 ${inter.name} 接口的某个参数没有 "name" 属性`);
});
});
});
});
}
catch (e) {
debugLog.error(e);
process.exit(1);
}
process.exit(0);
}));
program
.command('ls')
.description('查看数据源')
.action(() => {
debugLog.info(manager.allConfigs.map(conf => conf.name).join(' '));
});
program
.command('diff')
.description('对比数据源')
.action(() => {
manager.calDiffs();
const { modDiffs, boDiffs } = manager.diffs;
console.log('模块:');
console.log(modDiffs.map(mod => `${mod.name}(${mod.details.join(',').slice(0, 20)})`).join('\n'));
console.log('基类');
console.log(boDiffs.map(bo => `${bo.name}(${bo.details.join(',').slice(0, 20)})`).join('\n'));
});
program
.command('select <dsName>')
.description('选择数据源')
.action(dsName => {
manager.selectDataSource(dsName);
});
program
.command('updateBo <boName>')
.description('更新基类')
.action(boName => {
manager.makeSameBase(boName);
manager.regenerateFiles();
});
program
.command('updateMod <modName>')
.description('更新模块')
.action(modName => {
manager.makeSameMod(modName);
manager.regenerateFiles();
});
program
.command('generate')
.description('生成代码')
.action(() => {
manager.regenerateFiles();
});
program
.command('scan')
.description('扫描废弃接口')
.action(() => {
scan.main(manager);
});
program.parse(process.argv);
}
catch (e) {
console.error(e.stack);
debugLog.error(e.toString());
}
});
})();
//# sourceMappingURL=cmd.js.map