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