1 | #!/usr/bin/env node
|
2 | "use strict";
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | const yargs = require("yargs");
|
5 | const fs = require("fs");
|
6 | const gen = require("./lib/generator");
|
7 | const logger = require("./lib/logger");
|
8 | const parser = require("./lib/swagger-parser");
|
9 | const templateMgr = require("./lib/template-manager");
|
10 | const enumParser = require("./lib/enum.parser");
|
11 | const process = require("process");
|
12 | const request = require("request");
|
13 | const path = require("path");
|
14 | const view_model_manager_1 = require("./lib/view-model-manager");
|
15 | const swagger_enum_model_manager_1 = require("./lib/swagger-enum-model-manager");
|
16 | yargs.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');
|
32 | var argv = yargs.argv;
|
33 | function stderr(err) {
|
34 | console.log('Error: ' + err);
|
35 | process.exit(1);
|
36 | }
|
37 |
|
38 |
|
39 |
|
40 | if (argv.help) {
|
41 | yargs.showHelp();
|
42 | process.exit(0);
|
43 | }
|
44 |
|
45 | var fromSource = false;
|
46 | var fromUrl = false;
|
47 | var enumsFromFile = false;
|
48 | var enumsFromUrl = false;
|
49 | var usePromises = true;
|
50 | var basePath = process.cwd() + "\\";
|
51 | var ngVersion = getNgVersion(basePath);
|
52 | var withSpies = argv.withSpies === true;
|
53 | if (typeof argv.source !== 'undefined' && argv.source !== true)
|
54 | fromSource = true;
|
55 | else if (typeof argv.url !== 'undefined' && argv.url !== true)
|
56 | fromUrl = true;
|
57 | else {
|
58 | stderr('Swagger.json file (-s) or url (-u) must be specified. See --help');
|
59 | process.exit(1);
|
60 | }
|
61 | if (typeof argv.enumFile !== 'undefined' && argv.enumFile !== true) {
|
62 | enumsFromFile = true;
|
63 | }
|
64 | else if (typeof argv.enumUrl !== 'undefined' && argv.enumUrl !== true) {
|
65 | enumsFromUrl = true;
|
66 | }
|
67 | if (enumsFromFile && fromUrl) {
|
68 | stderr('you must get both enums and swagger from url or file');
|
69 | }
|
70 | if (enumsFromUrl && fromSource) {
|
71 | stderr('you must get both enums and swagger from url or file');
|
72 | }
|
73 | if (argv.returnType !== 'undefined') {
|
74 | usePromises = argv.returnType !== 'observable';
|
75 | }
|
76 | var outputdir = argv.outputpath || './output';
|
77 | if (!fs.existsSync(outputdir))
|
78 | fs.mkdirSync(outputdir);
|
79 | var sourceFile = argv.source;
|
80 | var l = new logger.Logger(true);
|
81 | var p = new parser.SwaggerParser(l);
|
82 | var t = new templateMgr.TemplateManager(l);
|
83 | var v = new view_model_manager_1.ViewModelManager(l);
|
84 | var e = new swagger_enum_model_manager_1.SwaggerEnumModelManager(l);
|
85 | var ep = new enumParser.EnumParsser(l);
|
86 | if (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 | }
|
112 | else {
|
113 | if (enumsFromFile) {
|
114 | parseAndGenEnums(sourceFile, outputdir, argv.enumFile, ngVersion);
|
115 | }
|
116 | else {
|
117 |
|
118 | parseAndGen(sourceFile, outputdir, ngVersion);
|
119 | }
|
120 | }
|
121 | function 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 | }
|
126 | function 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 | }
|
132 | function 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 |
|
\ | No newline at end of file |