@diia-inhouse/genproto 3.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command/index.js +1 -0
- package/dist/command/index.js.map +1 -1
- package/dist/command/javaCommandBuilder.js +1 -0
- package/dist/command/javaCommandBuilder.js.map +1 -1
- package/dist/command/pythonCommandBuilder.js +190 -0
- package/dist/command/pythonCommandBuilder.js.map +1 -0
- package/dist/command/tsCommandBuilder.js +2 -1
- package/dist/command/tsCommandBuilder.js.map +1 -1
- package/dist/genproto.js +15 -0
- package/dist/genproto.js.map +1 -1
- package/dist/types/command/index.d.ts +3 -1
- package/dist/types/command/javaCommandBuilder.d.ts +1 -0
- package/dist/types/command/pythonCommandBuilder.d.ts +7 -0
- package/dist/types/command/tsCommandBuilder.d.ts +1 -0
- package/package.json +1 -1
- package/src/command/index.ts +3 -0
- package/src/command/javaCommandBuilder.ts +2 -0
- package/src/command/pythonCommandBuilder.ts +233 -0
- package/src/command/tsCommandBuilder.ts +3 -1
- package/src/genproto.ts +16 -0
- package/tsconfig.json +1 -2
package/dist/command/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAwB;AACxB,0DAA4B;AAE5B,+BAA2B;AAI3B,IAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javaCommandBuilder.js","sourceRoot":"","sources":["../../src/command/javaCommandBuilder.ts"],"names":[],"mappings":";;AAAA,mCAAwC;AAExC,MAAqB,kBAAmB,SAAQ,sBAAc;IAC1D,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAG;YACZ,QAAQ;YACR,sCAAsC;YACtC,cAAc,IAAI,CAAC,SAAS,EAAE;YAC9B,mDAAmD;YACnD,QAAQ,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;SAC/C,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAEpC,OAAO,OAAO,CAAA;IAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"javaCommandBuilder.js","sourceRoot":"","sources":["../../src/command/javaCommandBuilder.ts"],"names":[],"mappings":";;AAAA,mCAAwC;AAExC,MAAqB,kBAAmB,SAAQ,sBAAc;IAC1D,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAG;YACZ,QAAQ;YACR,sCAAsC;YACtC,cAAc,IAAI,CAAC,SAAS,EAAE;YAC9B,mDAAmD;YACnD,QAAQ,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;SAC/C,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAEpC,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,KAAmB,CAAC;CACxC;AAhBD,qCAgBC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/* eslint-disable security/detect-non-literal-fs-filename */
|
|
7
|
+
const node_events_1 = require("node:events");
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const promises_2 = require("node:stream/promises");
|
|
12
|
+
const glob_1 = require("glob");
|
|
13
|
+
const index_1 = require("./index");
|
|
14
|
+
// import "designSystem/molecules/attentionIconMessageMlc.proto";
|
|
15
|
+
const importRegex = /import "(?<path>[^"]+)";/;
|
|
16
|
+
const slashPrefix = /^\/+/;
|
|
17
|
+
class PythonCommandBuilder extends index_1.CommandBuilder {
|
|
18
|
+
cardinalDependencies = {
|
|
19
|
+
'node_modules/@diia-inhouse/types/dist/proto': 'types_proto',
|
|
20
|
+
'node_modules/@diia-inhouse/design-system/dist/proto': 'design_system_proto',
|
|
21
|
+
};
|
|
22
|
+
async protocCommand() {
|
|
23
|
+
const command = [
|
|
24
|
+
'python3',
|
|
25
|
+
'-m grpc_tools.protoc',
|
|
26
|
+
`--python_out=${this.outputDir}`,
|
|
27
|
+
`--grpc_python_out=${this.outputDir}`,
|
|
28
|
+
`--pyi_out=${this.outputDir}`,
|
|
29
|
+
'--proto_path=proto',
|
|
30
|
+
'--proto_path=node_modules/protobufjs/google',
|
|
31
|
+
...Object.keys(this.cardinalDependencies)
|
|
32
|
+
.filter((path) => (0, node_fs_1.existsSync)(path)) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
33
|
+
.map((path) => `--proto_path=${path}`),
|
|
34
|
+
];
|
|
35
|
+
for (const protoPath in this.protoPaths) {
|
|
36
|
+
command.push(`--proto_path ${protoPath}`);
|
|
37
|
+
}
|
|
38
|
+
this.logger.log('python client build');
|
|
39
|
+
command.push(await this.iPath());
|
|
40
|
+
return command;
|
|
41
|
+
}
|
|
42
|
+
async postProcess() {
|
|
43
|
+
await this.mapPythonImports();
|
|
44
|
+
await touchFilesInTree(this.outputDir, '__init__.py', this.logger);
|
|
45
|
+
}
|
|
46
|
+
// 1. iterate over all present cardinal dependencies
|
|
47
|
+
// 2. store their fullpath as kv pair path-packagename
|
|
48
|
+
// 3. fetch all internal import statements and map them out to package name (from p.2)
|
|
49
|
+
// 4. read all files in outDir. default import pattern is as following
|
|
50
|
+
// 4.1 from designSystem.molecules import attentionIconMessageMlc_pb2
|
|
51
|
+
// 4.2 it translates to designSystem/molecules/attentionIconMessageMlc.proto
|
|
52
|
+
// 4.3 import attentionIconMessageMlc_pb2
|
|
53
|
+
// 4.4 it translates to attentionIconMessageMlc.proto
|
|
54
|
+
async mapPythonImports() {
|
|
55
|
+
const protoPattern = '/**/*.proto';
|
|
56
|
+
const mapping = {};
|
|
57
|
+
let replaceRules = [];
|
|
58
|
+
for (const dep in this.cardinalDependencies) {
|
|
59
|
+
const files = await (0, glob_1.glob)(dep + protoPattern);
|
|
60
|
+
for (const file of files) {
|
|
61
|
+
const res = file.replace(dep, '').replace(slashPrefix, '');
|
|
62
|
+
mapping[res] = this.cardinalDependencies[dep];
|
|
63
|
+
this.logger.log(`I'm putting ${res} as ${dep} for later mapping`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const localProtos = await (0, glob_1.glob)('proto' + protoPattern);
|
|
67
|
+
const rulesTasks = [];
|
|
68
|
+
for (const localProto of localProtos) {
|
|
69
|
+
rulesTasks.push(replaceRulesTask(localProto, mapping, this.logger));
|
|
70
|
+
}
|
|
71
|
+
const rules = await Promise.all(rulesTasks);
|
|
72
|
+
replaceRules = [...new Map(rules.flat().map((rule) => [rule.from, rule])).values()];
|
|
73
|
+
const generatedFiles = await (0, glob_1.glob)(this.outputDir + '/**/*.py');
|
|
74
|
+
const tasks = [];
|
|
75
|
+
for (const generatedFile of generatedFiles) {
|
|
76
|
+
tasks.push(fileMapper(generatedFile, replaceRules, this.logger));
|
|
77
|
+
}
|
|
78
|
+
await Promise.all(tasks);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.default = PythonCommandBuilder;
|
|
82
|
+
async function touchFilesInTree(dirPath, fileName, logger) {
|
|
83
|
+
const entries = await promises_1.default.readdir(dirPath, { withFileTypes: true }); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
84
|
+
const targetFile = node_path_1.default.join(dirPath, fileName); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
85
|
+
try {
|
|
86
|
+
const handle = await promises_1.default.open(targetFile, 'a'); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
87
|
+
await handle.utimes(new Date(), new Date()); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
88
|
+
await handle.close();
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
logger.log(`Could not touch file in ${dirPath}: ${err instanceof Error ? err.message : err}`);
|
|
92
|
+
}
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
if (entry.isDirectory()) {
|
|
95
|
+
const fullPath = node_path_1.default.join(dirPath, entry.name); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
96
|
+
await touchFilesInTree(fullPath, fileName, logger);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function replaceRulesTask(localProto, mapping, logger) {
|
|
101
|
+
const replaceRules = [];
|
|
102
|
+
let handle;
|
|
103
|
+
try {
|
|
104
|
+
handle = await promises_1.default.open(localProto); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
105
|
+
for await (const line of handle.readLines()) {
|
|
106
|
+
const result = importRegex.exec(line);
|
|
107
|
+
const importPath = result?.groups?.path;
|
|
108
|
+
if (importPath === undefined) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const dirpath = node_path_1.default.dirname(importPath);
|
|
112
|
+
const fileName = node_path_1.default.basename(importPath, '.proto');
|
|
113
|
+
if (dirpath === '.') {
|
|
114
|
+
const depname = mapping[importPath];
|
|
115
|
+
if (depname === undefined) {
|
|
116
|
+
logger.log(`Looking for ${importPath} in mapper, received ${depname}. Skipping the mapper.`);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
replaceRules.push({
|
|
120
|
+
from: `import ${fileName}_pb2`,
|
|
121
|
+
to: `from ${depname} import ${fileName}_pb2`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const depname = mapping[importPath];
|
|
126
|
+
if (depname === undefined) {
|
|
127
|
+
logger.log(`Looking for ${importPath} in mapper, received ${depname}. Skipping the mapper.`);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const importName = dirpath.replaceAll('/', '.');
|
|
131
|
+
replaceRules.push({
|
|
132
|
+
from: `from ${importName} import`,
|
|
133
|
+
to: `from ${depname}.${importName} import`,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
if (handle) {
|
|
140
|
+
await handle.close();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return replaceRules;
|
|
144
|
+
}
|
|
145
|
+
async function fileMapper(generatedFile, replaceRules, logger) {
|
|
146
|
+
let handle;
|
|
147
|
+
let wstream;
|
|
148
|
+
let isOk = false;
|
|
149
|
+
try {
|
|
150
|
+
handle = await promises_1.default.open(generatedFile); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
151
|
+
wstream = (0, node_fs_1.createWriteStream)(generatedFile + '.new'); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
152
|
+
for await (const line of handle.readLines()) {
|
|
153
|
+
let mutableLine = line;
|
|
154
|
+
for (const rule of replaceRules) {
|
|
155
|
+
mutableLine = mutableLine.replace(rule.from, rule.to);
|
|
156
|
+
}
|
|
157
|
+
const writeOk = wstream.write(mutableLine + '\n');
|
|
158
|
+
if (!writeOk) {
|
|
159
|
+
await (0, node_events_1.once)(wstream, 'drain');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
isOk = true;
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
if (handle) {
|
|
166
|
+
await handle.close();
|
|
167
|
+
}
|
|
168
|
+
if (wstream) {
|
|
169
|
+
wstream.end();
|
|
170
|
+
await (0, promises_2.finished)(wstream);
|
|
171
|
+
// nosemgrep: eslint.detect-non-literal-fs-filename
|
|
172
|
+
if (!isOk && (0, node_fs_1.existsSync)(generatedFile + '.new')) {
|
|
173
|
+
await promises_1.default.unlink(generatedFile + '.new'); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
await promises_1.default.rename(generatedFile + '.new', generatedFile); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
179
|
+
logger.log('Update successful!');
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
// nosemgrep: eslint.detect-non-literal-fs-filename
|
|
183
|
+
if ((0, node_fs_1.existsSync)(generatedFile + '.new')) {
|
|
184
|
+
await promises_1.default.unlink(generatedFile + '.new'); // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
185
|
+
}
|
|
186
|
+
logger.log(`Final swap failed: ${err}`);
|
|
187
|
+
throw err;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=pythonCommandBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythonCommandBuilder.js","sourceRoot":"","sources":["../../src/command/pythonCommandBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,7 +87,7 @@ class TsCommandBuilder extends index_1.CommandBuilder {
|
|
|
87
87
|
if (designSystemProtoPath.length > 0) {
|
|
88
88
|
command.push(`--proto_path ${designSystemProtoPath}`);
|
|
89
89
|
}
|
|
90
|
-
for (const protoPath
|
|
90
|
+
for (const protoPath of this.protoPaths) {
|
|
91
91
|
command.push(`--proto_path ${protoPath}`);
|
|
92
92
|
}
|
|
93
93
|
if (this.generateClient) {
|
|
@@ -105,6 +105,7 @@ class TsCommandBuilder extends index_1.CommandBuilder {
|
|
|
105
105
|
command.push(await this.iPath());
|
|
106
106
|
return command;
|
|
107
107
|
}
|
|
108
|
+
async postProcess() { }
|
|
108
109
|
async isFileExists(file) {
|
|
109
110
|
try {
|
|
110
111
|
await promises_1.default.access(file, promises_1.default.constants.F_OK);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsCommandBuilder.js","sourceRoot":"","sources":["../../src/command/tsCommandBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tsCommandBuilder.js","sourceRoot":"","sources":["../../src/command/tsCommandBuilder.ts"],"names":[],"mappings":";;;;;AAAA,2DAA6C;AAC7C,gEAAiC;AAEjC,mCAAkD;AAElD,MAAqB,gBAAiB,SAAQ,sBAAc;IACxD,8EAA8E;IAC9E,4CAA4C;IACpC,iBAAiB,GAAG;QACxB,yCAAyC;QACzC,6CAA6C;QAC7C,iFAAiF;KACpF,CAAA;IAED,KAAK,CAAC,wBAAwB;QAC1B,MAAM,eAAe,GAAG,EAAE,CAAA;QAE1B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACD,mEAAmE;gBACnE,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC,mDAAmD;YACnF,CAAC;YAAC,MAAM,CAAC;gBACL,SAAQ;YACZ,CAAC;YAED,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClC,CAAC;QAED,OAAO,eAAe,CAAC,GAAG,EAAE,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,eAAyB,CAAA;QAE7B,IACI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAC1C,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,EAChD,CAAC;YACC,eAAe,GAAG,gBAAQ,CAAC,EAAE,CAAA;QACjC,CAAC;aAAM,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACpG,eAAe,GAAG,gBAAQ,CAAC,IAAI,CAAA;QACnC,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;QAC7F,CAAC;QAED,IAAI,cAAsB,CAAA;QAC1B,IAAI,aAAuB,CAAA;QAC3B,IAAI,mBAA2B,CAAA;QAC/B,IAAI,qBAAqB,GAAG,EAAE,CAAA;QAE9B,QAAQ,eAAe,EAAE,CAAC;YACtB,KAAK,gBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjB,cAAc,GAAG,gCAAgC,CAAA;gBACjD,aAAa,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAA;gBACrD,mBAAmB,GAAG,wCAAwC,CAAA;gBAC9D,IAAA,6BAAQ,EAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;gBACtD,MAAK;YACT,CAAC;YACD,KAAK,gBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACf,cAAc,GAAG,gDAAgD,CAAA;gBACjE,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;gBAC5E,qBAAqB,GAAG,uDAAuD,CAAA;gBAC/E,mBAAmB,GAAG,gDAAgD,CAAA;gBACtE,MAAK;YACT,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAE5D,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;QACvG,CAAC;QAED,MAAM,OAAO,GAAG;YACZ,QAAQ;YACR,sCAAsC;YACtC,YAAY,cAAc,EAAE;YAC5B,uCAAuC;YACvC,uCAAuC;YACvC,iCAAiC;YACjC,yCAAyC;YACzC,yBAAyB;YACzB,qCAAqC;YACrC,iCAAiC;YACjC,mCAAmC;YACnC,sCAAsC;YACtC,6BAA6B;YAC7B,oCAAoC;YACpC,kBAAkB,IAAI,CAAC,SAAS,EAAE;YAClC,kBAAkB,IAAI,CAAC,OAAO,EAAE;YAChC,gBAAgB,cAAc,EAAE;SACnC,CAAA;QAED,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,gBAAgB,qBAAqB,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;QAC9F,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,uCAAuC,CAAC,CAAA;QAChG,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,aAAa,EAAE,eAAe,CAAC,CAAA;QACjG,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,KAAK,IAAI,WAAW,EAAE,CAAC,CAAA;YAEnG,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;QAC/B,CAAC;QAED,gHAAgH;QAChH,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAEhC,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,KAAmB,CAAC;IAE7B,KAAK,CAAC,YAAY,CAAC,IAAY;QACnC,IAAI,CAAC;YACD,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QAChB,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AA/HD,mCA+HC"}
|
package/dist/genproto.js
CHANGED
|
@@ -11,6 +11,7 @@ const lookpath_1 = require("lookpath");
|
|
|
11
11
|
const yargs_1 = __importDefault(require("yargs"));
|
|
12
12
|
const command_1 = require("./command");
|
|
13
13
|
const javaCommandBuilder_1 = __importDefault(require("./command/javaCommandBuilder"));
|
|
14
|
+
const pythonCommandBuilder_1 = __importDefault(require("./command/pythonCommandBuilder"));
|
|
14
15
|
const tsCommandBuilder_1 = __importDefault(require("./command/tsCommandBuilder"));
|
|
15
16
|
const logger_1 = __importDefault(require("./logger"));
|
|
16
17
|
const utils_1 = __importDefault(require("./utils"));
|
|
@@ -59,6 +60,10 @@ async function main() {
|
|
|
59
60
|
commandBuilder = new tsCommandBuilder_1.default(logger, generateClient, rootDir, outputDir, protoPaths);
|
|
60
61
|
break;
|
|
61
62
|
}
|
|
63
|
+
case command_1.Platform.python: {
|
|
64
|
+
commandBuilder = new pythonCommandBuilder_1.default(logger, generateClient, rootDir, outputDir, protoPaths);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
62
67
|
default: {
|
|
63
68
|
throw new Error(`Unexpected platform: ${platform}`);
|
|
64
69
|
}
|
|
@@ -87,6 +92,16 @@ async function main() {
|
|
|
87
92
|
const err = err_;
|
|
88
93
|
logger.log('Command failed: ', err.stderr?.toString());
|
|
89
94
|
logger.log(err.stack);
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
await commandBuilder.postProcess();
|
|
99
|
+
}
|
|
100
|
+
catch (err_) {
|
|
101
|
+
const err = err_;
|
|
102
|
+
logger.log('Postprocess failed: ', err.stderr?.toString());
|
|
103
|
+
logger.log(err.stack);
|
|
104
|
+
throw err;
|
|
90
105
|
}
|
|
91
106
|
logger.log('Protoc command finished successfully');
|
|
92
107
|
}
|
package/dist/genproto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genproto.js","sourceRoot":"","sources":["../src/genproto.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"genproto.js","sourceRoot":"","sources":["../src/genproto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import Logger from '../logger';
|
|
2
2
|
export declare enum Platform {
|
|
3
3
|
ts = "ts",
|
|
4
|
-
java = "java"
|
|
4
|
+
java = "java",
|
|
5
|
+
python = "python"
|
|
5
6
|
}
|
|
6
7
|
export declare abstract class CommandBuilder {
|
|
7
8
|
protected readonly logger: Logger;
|
|
@@ -15,4 +16,5 @@ export declare abstract class CommandBuilder {
|
|
|
15
16
|
[key: string]: string[];
|
|
16
17
|
}>;
|
|
17
18
|
abstract protocCommand(): Promise<string[]>;
|
|
19
|
+
abstract postProcess(): Promise<void>;
|
|
18
20
|
}
|
package/package.json
CHANGED
package/src/command/index.ts
CHANGED
|
@@ -8,6 +8,7 @@ import Logger from '../logger'
|
|
|
8
8
|
export enum Platform {
|
|
9
9
|
ts = 'ts',
|
|
10
10
|
java = 'java',
|
|
11
|
+
python = 'python',
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export abstract class CommandBuilder {
|
|
@@ -80,4 +81,6 @@ export abstract class CommandBuilder {
|
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
abstract protocCommand(): Promise<string[]>
|
|
84
|
+
|
|
85
|
+
abstract postProcess(): Promise<void>
|
|
83
86
|
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/* eslint-disable security/detect-non-literal-fs-filename */
|
|
2
|
+
import { once } from 'node:events'
|
|
3
|
+
import { WriteStream, createWriteStream, existsSync } from 'node:fs'
|
|
4
|
+
import fsPromises from 'node:fs/promises'
|
|
5
|
+
import path from 'node:path'
|
|
6
|
+
import { finished } from 'node:stream/promises'
|
|
7
|
+
|
|
8
|
+
import { glob } from 'glob'
|
|
9
|
+
|
|
10
|
+
import Logger from '../logger'
|
|
11
|
+
import { CommandBuilder } from './index'
|
|
12
|
+
|
|
13
|
+
// import "designSystem/molecules/attentionIconMessageMlc.proto";
|
|
14
|
+
const importRegex = /import "(?<path>[^"]+)";/
|
|
15
|
+
const slashPrefix = /^\/+/
|
|
16
|
+
|
|
17
|
+
export default class PythonCommandBuilder extends CommandBuilder {
|
|
18
|
+
private cardinalDependencies: Record<string, string> = {
|
|
19
|
+
'node_modules/@diia-inhouse/types/dist/proto': 'types_proto',
|
|
20
|
+
'node_modules/@diia-inhouse/design-system/dist/proto': 'design_system_proto',
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async protocCommand(): Promise<string[]> {
|
|
24
|
+
const command = [
|
|
25
|
+
'python3',
|
|
26
|
+
'-m grpc_tools.protoc',
|
|
27
|
+
`--python_out=${this.outputDir}`,
|
|
28
|
+
`--grpc_python_out=${this.outputDir}`,
|
|
29
|
+
`--pyi_out=${this.outputDir}`,
|
|
30
|
+
'--proto_path=proto',
|
|
31
|
+
'--proto_path=node_modules/protobufjs/google',
|
|
32
|
+
...Object.keys(this.cardinalDependencies)
|
|
33
|
+
.filter((path) => existsSync(path)) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
34
|
+
.map((path) => `--proto_path=${path}`),
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
for (const protoPath in this.protoPaths) {
|
|
38
|
+
command.push(`--proto_path ${protoPath}`)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
this.logger.log('python client build')
|
|
42
|
+
|
|
43
|
+
command.push(await this.iPath())
|
|
44
|
+
|
|
45
|
+
return command
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async postProcess(): Promise<void> {
|
|
49
|
+
await this.mapPythonImports()
|
|
50
|
+
|
|
51
|
+
await touchFilesInTree(this.outputDir, '__init__.py', this.logger)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 1. iterate over all present cardinal dependencies
|
|
55
|
+
// 2. store their fullpath as kv pair path-packagename
|
|
56
|
+
// 3. fetch all internal import statements and map them out to package name (from p.2)
|
|
57
|
+
// 4. read all files in outDir. default import pattern is as following
|
|
58
|
+
// 4.1 from designSystem.molecules import attentionIconMessageMlc_pb2
|
|
59
|
+
// 4.2 it translates to designSystem/molecules/attentionIconMessageMlc.proto
|
|
60
|
+
// 4.3 import attentionIconMessageMlc_pb2
|
|
61
|
+
// 4.4 it translates to attentionIconMessageMlc.proto
|
|
62
|
+
private async mapPythonImports(): Promise<void> {
|
|
63
|
+
const protoPattern = '/**/*.proto'
|
|
64
|
+
const mapping: Record<string, string> = {}
|
|
65
|
+
let replaceRules: { from: string; to: string }[] = []
|
|
66
|
+
|
|
67
|
+
for (const dep in this.cardinalDependencies) {
|
|
68
|
+
const files = await glob(dep + protoPattern)
|
|
69
|
+
|
|
70
|
+
for (const file of files) {
|
|
71
|
+
const res = file.replace(dep, '').replace(slashPrefix, '')
|
|
72
|
+
|
|
73
|
+
mapping[res] = this.cardinalDependencies[dep]
|
|
74
|
+
|
|
75
|
+
this.logger.log(`I'm putting ${res} as ${dep} for later mapping`)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const localProtos = await glob('proto' + protoPattern)
|
|
80
|
+
|
|
81
|
+
const rulesTasks = []
|
|
82
|
+
for (const localProto of localProtos) {
|
|
83
|
+
rulesTasks.push(replaceRulesTask(localProto, mapping, this.logger))
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const rules = await Promise.all(rulesTasks)
|
|
87
|
+
|
|
88
|
+
replaceRules = [...new Map(rules.flat().map((rule) => [rule.from, rule])).values()]
|
|
89
|
+
|
|
90
|
+
const generatedFiles = await glob(this.outputDir + '/**/*.py')
|
|
91
|
+
|
|
92
|
+
const tasks: Promise<void>[] = []
|
|
93
|
+
for (const generatedFile of generatedFiles) {
|
|
94
|
+
tasks.push(fileMapper(generatedFile, replaceRules, this.logger))
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
await Promise.all(tasks)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async function touchFilesInTree(dirPath: string, fileName: string, logger: Logger): Promise<void> {
|
|
102
|
+
const entries = await fsPromises.readdir(dirPath, { withFileTypes: true }) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
103
|
+
|
|
104
|
+
const targetFile = path.join(dirPath, fileName) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
105
|
+
try {
|
|
106
|
+
const handle = await fsPromises.open(targetFile, 'a') // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
107
|
+
|
|
108
|
+
await handle.utimes(new Date(), new Date()) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
109
|
+
await handle.close()
|
|
110
|
+
} catch (err) {
|
|
111
|
+
logger.log(`Could not touch file in ${dirPath}: ${err instanceof Error ? err.message : err}`)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
for (const entry of entries) {
|
|
115
|
+
if (entry.isDirectory()) {
|
|
116
|
+
const fullPath = path.join(dirPath, entry.name) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
117
|
+
|
|
118
|
+
await touchFilesInTree(fullPath, fileName, logger)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async function replaceRulesTask(
|
|
124
|
+
localProto: string,
|
|
125
|
+
mapping: Record<string, string>,
|
|
126
|
+
logger: Logger,
|
|
127
|
+
): Promise<{ from: string; to: string }[]> {
|
|
128
|
+
const replaceRules = []
|
|
129
|
+
|
|
130
|
+
let handle: fsPromises.FileHandle | undefined
|
|
131
|
+
try {
|
|
132
|
+
handle = await fsPromises.open(localProto) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
133
|
+
|
|
134
|
+
for await (const line of handle.readLines()) {
|
|
135
|
+
const result = importRegex.exec(line)
|
|
136
|
+
const importPath = result?.groups?.path
|
|
137
|
+
|
|
138
|
+
if (importPath === undefined) {
|
|
139
|
+
continue
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const dirpath = path.dirname(importPath)
|
|
143
|
+
const fileName = path.basename(importPath, '.proto')
|
|
144
|
+
|
|
145
|
+
if (dirpath === '.') {
|
|
146
|
+
const depname = mapping[importPath]
|
|
147
|
+
|
|
148
|
+
if (depname === undefined) {
|
|
149
|
+
logger.log(`Looking for ${importPath} in mapper, received ${depname}. Skipping the mapper.`)
|
|
150
|
+
continue
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
replaceRules.push({
|
|
154
|
+
from: `import ${fileName}_pb2`,
|
|
155
|
+
to: `from ${depname} import ${fileName}_pb2`,
|
|
156
|
+
})
|
|
157
|
+
} else {
|
|
158
|
+
const depname = mapping[importPath]
|
|
159
|
+
|
|
160
|
+
if (depname === undefined) {
|
|
161
|
+
logger.log(`Looking for ${importPath} in mapper, received ${depname}. Skipping the mapper.`)
|
|
162
|
+
continue
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const importName = dirpath.replaceAll('/', '.')
|
|
166
|
+
|
|
167
|
+
replaceRules.push({
|
|
168
|
+
from: `from ${importName} import`,
|
|
169
|
+
to: `from ${depname}.${importName} import`,
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} finally {
|
|
174
|
+
if (handle) {
|
|
175
|
+
await handle.close()
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return replaceRules
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
async function fileMapper(generatedFile: string, replaceRules: { from: string; to: string }[], logger: Logger): Promise<void> {
|
|
183
|
+
let handle: fsPromises.FileHandle | undefined
|
|
184
|
+
let wstream: WriteStream | undefined
|
|
185
|
+
let isOk = false
|
|
186
|
+
try {
|
|
187
|
+
handle = await fsPromises.open(generatedFile) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
188
|
+
|
|
189
|
+
wstream = createWriteStream(generatedFile + '.new') // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
190
|
+
|
|
191
|
+
for await (const line of handle.readLines()) {
|
|
192
|
+
let mutableLine = line
|
|
193
|
+
for (const rule of replaceRules) {
|
|
194
|
+
mutableLine = mutableLine.replace(rule.from, rule.to)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const writeOk = wstream.write(mutableLine + '\n')
|
|
198
|
+
|
|
199
|
+
if (!writeOk) {
|
|
200
|
+
await once(wstream, 'drain')
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
isOk = true
|
|
205
|
+
} finally {
|
|
206
|
+
if (handle) {
|
|
207
|
+
await handle.close()
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (wstream) {
|
|
211
|
+
wstream.end()
|
|
212
|
+
await finished(wstream)
|
|
213
|
+
|
|
214
|
+
// nosemgrep: eslint.detect-non-literal-fs-filename
|
|
215
|
+
if (!isOk && existsSync(generatedFile + '.new')) {
|
|
216
|
+
await fsPromises.unlink(generatedFile + '.new') // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
try {
|
|
222
|
+
await fsPromises.rename(generatedFile + '.new', generatedFile) // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
223
|
+
logger.log('Update successful!')
|
|
224
|
+
} catch (err) {
|
|
225
|
+
// nosemgrep: eslint.detect-non-literal-fs-filename
|
|
226
|
+
if (existsSync(generatedFile + '.new')) {
|
|
227
|
+
await fsPromises.unlink(generatedFile + '.new') // nosemgrep: eslint.detect-non-literal-fs-filename
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
logger.log(`Final swap failed: ${err}`)
|
|
231
|
+
throw err
|
|
232
|
+
}
|
|
233
|
+
}
|
|
@@ -96,7 +96,7 @@ export default class TsCommandBuilder extends CommandBuilder {
|
|
|
96
96
|
command.push(`--proto_path ${designSystemProtoPath}`)
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
for (const protoPath
|
|
99
|
+
for (const protoPath of this.protoPaths) {
|
|
100
100
|
command.push(`--proto_path ${protoPath}`)
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -119,6 +119,8 @@ export default class TsCommandBuilder extends CommandBuilder {
|
|
|
119
119
|
return command
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
async postProcess(): Promise<void> {}
|
|
123
|
+
|
|
122
124
|
private async isFileExists(file: string): Promise<boolean> {
|
|
123
125
|
try {
|
|
124
126
|
await fs.access(file, fs.constants.F_OK)
|
package/src/genproto.ts
CHANGED
|
@@ -8,6 +8,7 @@ import yargs from 'yargs'
|
|
|
8
8
|
|
|
9
9
|
import { CommandBuilder, Platform } from './command'
|
|
10
10
|
import JavaCommandBuilder from './command/javaCommandBuilder'
|
|
11
|
+
import PythonCommandBuilder from './command/pythonCommandBuilder'
|
|
11
12
|
import TsCommandBuilder from './command/tsCommandBuilder'
|
|
12
13
|
import Logger from './logger'
|
|
13
14
|
import Utils from './utils'
|
|
@@ -63,6 +64,10 @@ async function main(): Promise<void> {
|
|
|
63
64
|
commandBuilder = new TsCommandBuilder(logger, generateClient, rootDir, outputDir, protoPaths)
|
|
64
65
|
break
|
|
65
66
|
}
|
|
67
|
+
case Platform.python: {
|
|
68
|
+
commandBuilder = new PythonCommandBuilder(logger, generateClient, rootDir, outputDir, protoPaths)
|
|
69
|
+
break
|
|
70
|
+
}
|
|
66
71
|
default: {
|
|
67
72
|
throw new Error(`Unexpected platform: ${platform}`)
|
|
68
73
|
}
|
|
@@ -94,6 +99,17 @@ async function main(): Promise<void> {
|
|
|
94
99
|
|
|
95
100
|
logger.log('Command failed: ', err.stderr?.toString())
|
|
96
101
|
logger.log(err.stack)
|
|
102
|
+
throw err
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
await commandBuilder.postProcess()
|
|
107
|
+
} catch (err_: unknown) {
|
|
108
|
+
const err = err_ as { stderr: Buffer; stack: never }
|
|
109
|
+
|
|
110
|
+
logger.log('Postprocess failed: ', err.stderr?.toString())
|
|
111
|
+
logger.log(err.stack)
|
|
112
|
+
throw err
|
|
97
113
|
}
|
|
98
114
|
|
|
99
115
|
logger.log('Protoc command finished successfully')
|