airship-server
Version:
Airship is a framework for Node.JS & TypeScript that helps you to write big, scalable and maintainable API servers.
64 lines • 3.07 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const BaseConsoleApplication_1 = require("../../utils/BaseConsoleApplication");
const ConsoleLogger_1 = require("../../logger/infrustructure/ConsoleLogger");
const ApiSchema_1 = require("../../schemeGenerator/domain/ApiSchema");
const fs_1 = require("fs");
const ApiDocGenerator_1 = require("../infrastructure/ApiDocGenerator");
class DocsGeneratorApplication extends BaseConsoleApplication_1.default {
constructor() {
super();
try {
this.run();
}
catch (e) {
console.log(e);
}
}
run() {
return __awaiter(this, void 0, void 0, function* () {
let args = this.getArgs();
let schemePath = args['s'];
let outPath = args['o'];
if (!schemePath || !outPath)
this.die('usage: --s=<schemes_path> --o=<output_path>');
let logger = new ConsoleLogger_1.default();
let docGenerator = new ApiDocGenerator_1.default();
let schemeFiles = yield this.readDir(schemePath);
schemeFiles = schemeFiles.filter(f => f !== '.DS_Store');
let schemeVersions = schemeFiles
.map(f => f.replace('api-scheme-v', '').replace('.json', ''))
.sort();
logger.log('Found schemes', schemeVersions.map(v => 'V' + v).join(', '));
let schema = yield this.readFile(schemePath + '/' + schemeFiles[schemeFiles.length - 1]);
let apiSchema = ApiSchema_1.default.deserialize(JSON.parse(schema));
let lastSchemeVersion = schemeVersions[schemeVersions.length - 1];
logger.log('Last scheme:', 'V' + lastSchemeVersion);
try {
fs_1.readdirSync(outPath + `/sdk-v${lastSchemeVersion}/`);
logger.warn(`Already have Doc for V${lastSchemeVersion}, force regenerating`);
}
catch (e) {
}
let docs = docGenerator.generateApiDoc(apiSchema, Number(lastSchemeVersion));
let docPath = outPath + `/api-doc-v${lastSchemeVersion}/`;
try {
fs_1.mkdirSync(docPath);
}
catch (e) {
}
yield this.saveToFile(docPath + 'docs.html', docs.render());
logger.log('Done');
});
}
}
new DocsGeneratorApplication();
//# sourceMappingURL=DocsGeneratorApplication.js.map