UNPKG

5.21 kBJavaScriptView Raw
1#!/usr/bin/env node
2"use strict";
3Object.defineProperty(exports, "__esModule", { value: true });
4const yargs = require("yargs");
5const fs = require("fs");
6const gen = require("./lib/generator");
7const logger = require("./lib/logger");
8const parser = require("./lib/swagger-parser");
9const templateMgr = require("./lib/template-manager");
10const enumParser = require("./lib/enum.parser");
11const process = require("process");
12const request = require("request");
13const path = require("path");
14const view_model_manager_1 = require("./lib/view-model-manager");
15const swagger_enum_model_manager_1 = require("./lib/swagger-enum-model-manager");
16yargs.usage('Usage: main -s path/to/your/swagger.json')
17 .alias('h', 'help')
18 .alias('s', 'source')
19 .alias('u', 'url')
20 .alias('o', 'outputpath')
21 .alias('f', 'enumFile')
22 .alias('e', 'enumUrl')
23 .alias('r', 'returnType')
24 .alias('w', 'withSpies')
25 .describe('s', 'Path to your swagger.json file')
26 .describe('u', 'Url of your swagger.json file')
27 .describe('o', 'Path where to store generated files')
28 .describe('f', 'Path to your enum.json file')
29 .describe('e', 'Url of your enum.json file')
30 .describe('r', 'Will return as observable or promise (default is promise)')
31 .describe('w', 'Generates spy classes for each service generated');
32var argv = yargs.argv;
33function stderr(err) {
34 console.log('Error: ' + err);
35 process.exit(1);
36}
37/**
38 * Execute
39 */
40if (argv.help) {
41 yargs.showHelp();
42 process.exit(0);
43}
44// Check requirements
45var fromSource = false;
46var fromUrl = false;
47var enumsFromFile = false;
48var enumsFromUrl = false;
49var usePromises = true;
50var basePath = process.cwd() + "\\";
51var ngVersion = getNgVersion(basePath);
52var withSpies = argv.withSpies === true;
53if (typeof argv.source !== 'undefined' && argv.source !== true)
54 fromSource = true;
55else if (typeof argv.url !== 'undefined' && argv.url !== true)
56 fromUrl = true;
57else {
58 stderr('Swagger.json file (-s) or url (-u) must be specified. See --help');
59 process.exit(1);
60}
61if (typeof argv.enumFile !== 'undefined' && argv.enumFile !== true) {
62 enumsFromFile = true;
63}
64else if (typeof argv.enumUrl !== 'undefined' && argv.enumUrl !== true) {
65 enumsFromUrl = true;
66}
67if (enumsFromFile && fromUrl) {
68 stderr('you must get both enums and swagger from url or file');
69}
70if (enumsFromUrl && fromSource) {
71 stderr('you must get both enums and swagger from url or file');
72}
73if (argv.returnType !== 'undefined') {
74 usePromises = argv.returnType !== 'observable';
75}
76var outputdir = argv.outputpath || './output';
77if (!fs.existsSync(outputdir))
78 fs.mkdirSync(outputdir);
79var sourceFile = argv.source;
80var l = new logger.Logger(true);
81var p = new parser.SwaggerParser(l);
82var t = new templateMgr.TemplateManager(l);
83var v = new view_model_manager_1.ViewModelManager(l);
84var e = new swagger_enum_model_manager_1.SwaggerEnumModelManager(l);
85var ep = new enumParser.EnumParsser(l);
86if (fromUrl) {
87 var dest = path.join(outputdir, "swagger.json");
88 var enumDest = path.join(outputdir, "enums.json");
89 request
90 .get(argv.url, function (error, response, body) {
91 if (error || response.statusCode != 200) {
92 console.log(error);
93 process.exit(1);
94 }
95 fs.writeFileSync(dest, body, 'utf-8');
96 if (enumsFromUrl) {
97 console.log('get enums from url');
98 request.get(argv.enumUrl, function (enumError, enumResponse, enumBody) {
99 if (error || response.statusCode != 200) {
100 console.log(error);
101 process.exit(1);
102 }
103 fs.writeFileSync(enumDest, enumBody, 'utf-8');
104 parseAndGenEnums(dest, outputdir, enumDest, ngVersion);
105 });
106 }
107 else {
108 parseAndGen(dest, outputdir, ngVersion);
109 }
110 });
111}
112else {
113 if (enumsFromFile) {
114 parseAndGenEnums(sourceFile, outputdir, argv.enumFile, ngVersion);
115 }
116 else {
117 //Do Job
118 parseAndGen(sourceFile, outputdir, ngVersion);
119 }
120}
121function parseAndGen(file, outDir, ngVersion) {
122 var swagger = p.parse(file);
123 var g = new gen.Generator(outDir, l, t.get(), v.createMustacheViewModel(swagger), e.createEnumModel(swagger), usePromises, ngVersion, withSpies);
124 g.generateAPIClient();
125}
126function parseAndGenEnums(file, outDir, enumFile, ngVersion) {
127 var enums = ep.parse(enumFile);
128 var swagger = p.parse(file);
129 var g = new gen.Generator(outDir, l, t.get(), v.createMustacheViewModel(swagger), enums, usePromises, ngVersion, withSpies);
130 g.generateAPIClient();
131}
132function getNgVersion(basePath) {
133 var packagePath = basePath + 'package.json';
134 var packageContent = fs.readFileSync(packagePath);
135 var packageObj = JSON.parse(packageContent.toString());
136 var ngVersion = packageObj.dependencies['@angular/common'];
137 var ngVerParts = ngVersion.split('.')[0].replace('^', '').replace('~', '');
138 var ngMajorVer = ngVerParts;
139 return +ngMajorVer;
140}
141//# sourceMappingURL=main.js.map
\No newline at end of file