@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.
@@ -11,6 +11,7 @@ var Platform;
11
11
  (function (Platform) {
12
12
  Platform["ts"] = "ts";
13
13
  Platform["java"] = "java";
14
+ Platform["python"] = "python";
14
15
  })(Platform || (exports.Platform = Platform = {}));
15
16
  class CommandBuilder {
16
17
  logger;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ class JavaCommandBuilder extends index_1.CommandBuilder {
13
13
  this.logger.log('java client build');
14
14
  return command;
15
15
  }
16
+ async postProcess() { }
16
17
  }
17
18
  exports.default = JavaCommandBuilder;
18
19
  //# sourceMappingURL=javaCommandBuilder.js.map
@@ -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;CACJ;AAdD,qCAcC"}
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 in this.protoPaths) {
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":"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"}
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
  }
@@ -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
  }
@@ -1,4 +1,5 @@
1
1
  import { CommandBuilder } from './index';
2
2
  export default class JavaCommandBuilder extends CommandBuilder {
3
3
  protocCommand(): Promise<string[]>;
4
+ postProcess(): Promise<void>;
4
5
  }
@@ -0,0 +1,7 @@
1
+ import { CommandBuilder } from './index';
2
+ export default class PythonCommandBuilder extends CommandBuilder {
3
+ private cardinalDependencies;
4
+ protocCommand(): Promise<string[]>;
5
+ postProcess(): Promise<void>;
6
+ private mapPythonImports;
7
+ }
@@ -3,5 +3,6 @@ export default class TsCommandBuilder extends CommandBuilder {
3
3
  private tsPluginLocations;
4
4
  getProtoTsPluginLocation(): Promise<string | undefined>;
5
5
  protocCommand(): Promise<string[]>;
6
+ postProcess(): Promise<void>;
6
7
  private isFileExists;
7
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diia-inhouse/genproto",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "JS codegen from proto with imports from @diia-inhouse/types",
5
5
  "bin": {
6
6
  "genproto": "./dist/genproto.js"
@@ -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
  }
@@ -14,4 +14,6 @@ export default class JavaCommandBuilder extends CommandBuilder {
14
14
 
15
15
  return command
16
16
  }
17
+
18
+ async postProcess(): Promise<void> {}
17
19
  }
@@ -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 in this.protoPaths) {
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')
package/tsconfig.json CHANGED
@@ -7,8 +7,7 @@
7
7
  "baseUrl": ".",
8
8
  "noUnusedLocals": false,
9
9
  "noUnusedParameters": false,
10
- "strict": true,
11
- "lib": ["dom"]
10
+ "strict": true
12
11
  },
13
12
  "include": ["src/genproto.ts"],
14
13
  "exclude": ["node_modules"]