|
1 |
| -import * as fs from "fs"; |
2 |
| -import { posix as path } from "path"; |
3 |
| - |
4 |
| -import { CodeGenerator } from "../lib"; |
5 |
| -import * as Templates from "../lib/templates"; |
6 |
| -import type * as Types from "../lib/types"; |
7 |
| - |
8 |
| -const writeText = (filename: string, text: string): void => { |
9 |
| - fs.mkdirSync(path.dirname(filename), { recursive: true }); |
10 |
| - fs.writeFileSync(filename, text, { encoding: "utf-8" }); |
11 |
| - console.log(`Generate Code : ${filename}`); |
12 |
| -}; |
13 |
| - |
14 |
| -const generateTypedefCodeOnly = (inputFilename: string, outputFilename: string, isValidate: boolean) => { |
15 |
| - const codeGenerator = new CodeGenerator(inputFilename); |
16 |
| - if (isValidate) { |
17 |
| - codeGenerator.validateOpenApiSchema({ |
18 |
| - logger: { displayLogLines: 1 }, |
19 |
| - }); |
20 |
| - } |
21 |
| - const code = codeGenerator.generateTypeDefinition(); |
22 |
| - writeText(outputFilename, code); |
23 |
| -}; |
24 |
| - |
25 |
| -const generateTemplateCodeOnly = ( |
26 |
| - inputFilename: string, |
27 |
| - outputFilename: string, |
28 |
| - isValidate: boolean, |
29 |
| - option: Templates.ApiClient.Option, |
30 |
| -): void => { |
31 |
| - const codeGenerator = new CodeGenerator(inputFilename); |
32 |
| - if (isValidate) { |
33 |
| - codeGenerator.validateOpenApiSchema({ |
34 |
| - logger: { displayLogLines: 1 }, |
35 |
| - }); |
36 |
| - } |
37 |
| - |
38 |
| - const apiClientGeneratorTemplate: Types.CodeGenerator.CustomGenerator<Templates.ApiClient.Option> = { |
39 |
| - generator: Templates.ApiClient.generator, |
40 |
| - option: option, |
41 |
| - }; |
42 |
| - |
43 |
| - const code = codeGenerator.generateCode([apiClientGeneratorTemplate]); |
44 |
| - |
45 |
| - writeText(outputFilename, code); |
46 |
| -}; |
47 |
| - |
48 |
| -const generateTypedefWithTemplateCode = ( |
49 |
| - inputFilename: string, |
50 |
| - outputFilename: string, |
51 |
| - isValidate: boolean, |
52 |
| - option: Templates.ApiClient.Option, |
53 |
| -): void => { |
54 |
| - const codeGenerator = new CodeGenerator(inputFilename); |
55 |
| - if (isValidate) { |
56 |
| - codeGenerator.validateOpenApiSchema({ |
57 |
| - logger: { displayLogLines: 1 }, |
58 |
| - }); |
59 |
| - } |
60 |
| - |
61 |
| - const code = codeGenerator.generateTypeDefinition([ |
62 |
| - codeGenerator.getAdditionalTypeDefinitionCustomCodeGenerator(), |
63 |
| - { |
64 |
| - generator: Templates.ApiClient.generator, |
65 |
| - option: option, |
66 |
| - }, |
67 |
| - ]); |
68 |
| - |
69 |
| - writeText(outputFilename, code); |
70 |
| -}; |
71 |
| - |
72 |
| -const generateSplitCode = (inputFilename: string, outputDir: string) => { |
73 |
| - const codeGenerator = new CodeGenerator(inputFilename); |
74 |
| - |
75 |
| - const apiClientGeneratorTemplate: Types.CodeGenerator.CustomGenerator<Templates.ApiClient.Option> = { |
76 |
| - generator: Templates.ApiClient.generator, |
77 |
| - option: { sync: false, additionalMethodComment: true }, |
78 |
| - }; |
79 |
| - |
80 |
| - const typeDefCode = codeGenerator.generateTypeDefinition(); |
81 |
| - const apiClientCode = codeGenerator.generateCode([ |
82 |
| - { |
83 |
| - generator: () => { |
84 |
| - return [`import { Schemas } from "./types";`]; |
85 |
| - }, |
86 |
| - }, |
87 |
| - codeGenerator.getAdditionalTypeDefinitionCustomCodeGenerator(), |
88 |
| - apiClientGeneratorTemplate, |
89 |
| - ]); |
90 |
| - |
91 |
| - writeText(path.join(outputDir, "types.ts"), typeDefCode); |
92 |
| - writeText(path.join(outputDir, "apiClient.ts"), apiClientCode); |
93 |
| -}; |
94 |
| - |
95 |
| -const generateParameter = (inputFilename: string, outputFilename: string) => { |
96 |
| - const codeGenerator = new CodeGenerator(inputFilename); |
97 |
| - writeText(outputFilename, JSON.stringify(codeGenerator.getCodeGeneratorParamsArray(), null, 2)); |
98 |
| -}; |
| 1 | +import * as Writer from "./writer"; |
99 | 2 |
|
100 | 3 | const main = () => {
|
101 |
| - generateTypedefCodeOnly("test/api.test.domain/index.yml", "test/code/typedef-only/api.test.domain.ts", true); |
102 |
| - generateTypedefCodeOnly("test/infer.domain/index.yml", "test/code/typedef-only/infer.domain.ts", false); |
| 4 | + Writer.generateTypedefCodeOnly("test/api.test.domain/index.yml", "test/code/typedef-only/api.test.domain.ts", true); |
| 5 | + Writer.generateTypedefCodeOnly("test/infer.domain/index.yml", "test/code/typedef-only/infer.domain.ts", false); |
103 | 6 |
|
104 |
| - generateTemplateCodeOnly("test/api.test.domain/index.yml", "test/code/template-only/api.test.domain.ts", true, { sync: false }); |
105 |
| - generateTemplateCodeOnly("test/api.test.domain/index.yml", "test/code/template-only/sync-api.test.domain.ts", true, { sync: true }); |
106 |
| - generateTemplateCodeOnly("test/infer.domain/index.yml", "test/code/template-only/infer.domain.ts", false, { sync: true }); |
| 7 | + Writer.generateTemplateCodeOnly("test/api.test.domain/index.yml", "test/code/template-only/api.test.domain.ts", true, { sync: false }); |
| 8 | + Writer.generateTemplateCodeOnly("test/api.test.domain/index.yml", "test/code/template-only/sync-api.test.domain.ts", true, { sync: true }); |
| 9 | + Writer.generateTemplateCodeOnly("test/infer.domain/index.yml", "test/code/template-only/infer.domain.ts", false, { sync: true }); |
107 | 10 |
|
108 |
| - generateTypedefWithTemplateCode("test/api.v2.domain/index.yml", "test/code/typedef-with-template/api.v2.domain.ts", false, { sync: false }); |
109 |
| - generateTypedefWithTemplateCode("test/api.test.domain/index.yml", "test/code/typedef-with-template/api.test.domain.ts", true, { |
| 11 | + Writer.generateTypedefWithTemplateCode("test/api.v2.domain/index.yml", "test/code/typedef-with-template/api.v2.domain.ts", false, { |
110 | 12 | sync: false,
|
111 | 13 | });
|
112 |
| - generateTypedefWithTemplateCode("test/api.test.domain/index.yml", "test/code/typedef-with-template/sync-api.test.domain.ts", true, { |
| 14 | + Writer.generateTypedefWithTemplateCode("test/api.test.domain/index.yml", "test/code/typedef-with-template/api.test.domain.ts", true, { |
| 15 | + sync: false, |
| 16 | + }); |
| 17 | + Writer.generateTypedefWithTemplateCode("test/api.test.domain/index.yml", "test/code/typedef-with-template/sync-api.test.domain.ts", true, { |
113 | 18 | sync: true,
|
114 | 19 | });
|
115 |
| - generateTypedefWithTemplateCode("test/infer.domain/index.yml", "test/code/typedef-with-template/infer.domain.ts", false, { sync: false }); |
| 20 | + Writer.generateTypedefWithTemplateCode("test/infer.domain/index.yml", "test/code/typedef-with-template/infer.domain.ts", false, { |
| 21 | + sync: false, |
| 22 | + }); |
116 | 23 |
|
117 |
| - generateTypedefWithTemplateCode("test/ref.access/index.yml", "test/code/typedef-with-template/ref-access.ts", false, { |
| 24 | + Writer.generateTypedefWithTemplateCode("test/ref.access/index.yml", "test/code/typedef-with-template/ref-access.ts", false, { |
118 | 25 | sync: false,
|
119 | 26 | });
|
120 |
| - generateTypedefWithTemplateCode("test/kubernetes/openapi-v1.18.5.json", "test/code/kubernetes/client-v1.18.5.ts", false, { sync: false }); |
121 |
| - generateTypedefWithTemplateCode("test/argo-rollout/index.json", "test/code/argo-rollout/client.ts", false, { |
| 27 | + Writer.generateTypedefWithTemplateCode("test/kubernetes/openapi-v1.18.5.json", "test/code/kubernetes/client-v1.18.5.ts", false, { |
122 | 28 | sync: false,
|
123 | 29 | });
|
| 30 | + Writer.generateTypedefWithTemplateCode("test/argo-rollout/index.json", "test/code/argo-rollout/client.ts", false, { |
| 31 | + sync: false, |
| 32 | + }); |
| 33 | + |
| 34 | + Writer.generateSplitCode("test/api.test.domain/index.yml", "test/code/split"); |
124 | 35 |
|
125 |
| - generateSplitCode("test/api.test.domain/index.yml", "test/code/split"); |
| 36 | + Writer.generateParameter("test/api.test.domain/index.yml", "test/code/parameter/api.test.domain.json"); |
| 37 | + Writer.generateParameter("test/infer.domain/index.yml", "test/code/parameter/infer.domain.json"); |
126 | 38 |
|
127 |
| - generateParameter("test/api.test.domain/index.yml", "test/code/parameter/api.test.domain.json"); |
128 |
| - generateParameter("test/infer.domain/index.yml", "test/code/parameter/infer.domain.json"); |
| 39 | + Writer.generateFormatTypeCode("test/format.domain/index.yml", "test/code/format.domain/code.ts"); |
129 | 40 | };
|
130 | 41 |
|
131 | 42 | main();
|
0 commit comments