UNPKG

airship-server

Version:

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

81 lines 3.81 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 AirshipSDKGenerator_1 = require("../application/AirshipSDKGenerator"); const AirshipApiSDKGenerator_1 = require("../infrastructure/AirshipApiSDKGenerator"); const ConsoleLogger_1 = require("../../logger/infrustructure/ConsoleLogger"); const ApiSchema_1 = require("../../schemeGenerator/domain/ApiSchema"); const fs_1 = require("fs"); class AirshipSDKGeneratorApplication 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 schemeFiles = yield this.readDir(schemePath); schemeFiles = schemeFiles.filter(f => f !== '.DS_Store'); let schemeVersions = schemeFiles .map(f => f .replace('api-scheme-v', '') .replace('.json', '')) .map(v => parseInt(v, 10)) .sort((a, b) => a - b); console.log(schemeVersions); logger.log('Found schemes', schemeVersions.map(v => 'V' + v).join(', ')); let lastSchemeVersion = schemeVersions[schemeVersions.length - 1]; let lastSchemeFileName = schemeFiles.find(file => file .replace('api-scheme-v', '') .replace('.json', '') === String(lastSchemeVersion)); let schema = yield this.readFile(schemePath + '/' + lastSchemeFileName); let apiSchema = ApiSchema_1.default.deserialize(JSON.parse(schema)); logger.log('Last scheme:', 'V' + lastSchemeVersion); try { fs_1.readdirSync(outPath + `/sdk-v${lastSchemeVersion}/`); logger.warn(`Already have SDK for V${lastSchemeVersion}, force generating`); //this.die('') } catch (e) { } let airshipSDKGenerator = new AirshipSDKGenerator_1.default(new AirshipApiSDKGenerator_1.default(), apiSchema, { sdkName: 'AirshipApi', apiPath: '/api/', schemeVersion: Number(lastSchemeVersion) }, logger); let sdk = airshipSDKGenerator.generate(); let sdkPath = outPath + `/sdk-v${lastSchemeVersion}/`; try { fs_1.mkdirSync(sdkPath); } catch (e) { } for (let file of sdk) { logger.log('Saving', file.fileName); yield this.saveToFile(sdkPath + file.fileName, file.code.render()); } logger.log('Done'); }); } } new AirshipSDKGeneratorApplication(); //# sourceMappingURL=AirshipSDKGeneratorApplication.js.map