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
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 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