UNPKG

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
"use strict"; 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