UNPKG

airship-server

Version:

Airship is a framework for Node.JS & TypeScript that helps you to write big, scalable and maintainable API servers.

71 lines 3.54 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 AirshipSchemeGenerator_1 = require("../application/AirshipSchemeGenerator"); const AirshipApiSchemeGenerator_1 = require("../infrastructure/AirshipApiSchemeGenerator"); const assert_1 = require("assert"); class AirshipSchemeGeneratorApplication extends BaseConsoleApplication_1.default { constructor() { super(); try { this.run(); } catch (e) { console.error(e); } } run() { return __awaiter(this, void 0, void 0, function* () { let logger = new ConsoleLogger_1.default(); let airshipApiSchemeGenerator = new AirshipApiSchemeGenerator_1.default(); let args = this.getArgs(); let path = args['o']; let configPath = args['c']; if (!path || !configPath) this.die(`usage: --o=<output_path> --c=<config>\n\noutput_path: absolute output path\nconfig: absolute path to config`); let config = require(configPath).default; let schemeFiles = yield this.readDir(path); let versions = schemeFiles .filter(f => f !== '.DS_Store') .map(f => f.replace('api-scheme-v', '').replace('.json', '')) .sort(); let generator = new AirshipSchemeGenerator_1.default(airshipApiSchemeGenerator, logger, ...config.endpoints); let v = 1; try { let scheme = generator.generate(); } catch (e) { console.log(e); } let scheme = generator.generate(); if (versions.length > 0) { v = parseInt(versions[versions.length - 1]) + 1; let lastScheme = yield this.readFile(path + '/api-scheme-v' + versions[versions.length - 1] + '.json'); try { assert_1.deepEqual(JSON.parse(lastScheme), scheme.serialize()); logger.warn('scheme-generator', `scheme was not changed since v${v - 1}`); } catch (e) { v = parseInt(versions[versions.length - 1]) + 1; yield this.saveToFile(path + '/api-scheme-v' + v + '.json', JSON.stringify(scheme.serialize())); logger.log('scheme-generator', `scheme v${v} generated`); } } else { yield this.saveToFile(path + '/api-scheme-v' + v + '.json', JSON.stringify(scheme.serialize())); logger.log('scheme-generator', `scheme v${v} generated`); } }); } } new AirshipSchemeGeneratorApplication(); //# sourceMappingURL=AirshipSchemeGeneratorApplication.js.map