mirror of
https://fuchsia.googlesource.com/third_party/pigweed.googlesource.com/pigweed/pigweed
synced 2024-09-19 21:29:48 +00:00
01b5d06eea
- Upgrade to latest eslint (8.47.0) - Add eslint presubmit - Fix all eslint errors Change-Id: Ib9dc37e7f4b3e2666b0792e14c93b6b0d4ffa111 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165410 Commit-Queue: Anthony DiGirolamo <tonymd@google.com> Reviewed-by: Asad Memon <asadmemon@google.com> Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
88 lines
2.7 KiB
TypeScript
88 lines
2.7 KiB
TypeScript
// Copyright 2022 The Pigweed Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
// use this file except in compliance with the License. You may obtain a copy of
|
|
// the License at
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
// License for the specific language governing permissions and limitations under
|
|
// the License.
|
|
|
|
import { exec, ExecException } from 'child_process';
|
|
import fs from 'fs';
|
|
|
|
const run = function (executable: string, args: string[]) {
|
|
console.log(args);
|
|
return new Promise<void>((resolve) => {
|
|
exec(
|
|
`${executable} ${args.join(' ')}`,
|
|
{ cwd: process.cwd() },
|
|
(error: ExecException | null, stdout: string | Buffer) => {
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
|
|
console.log(stdout);
|
|
resolve();
|
|
},
|
|
);
|
|
});
|
|
};
|
|
|
|
const protos = [
|
|
'pw_transfer/transfer.proto',
|
|
'pw_rpc/ts/test.proto',
|
|
'pw_rpc/echo.proto',
|
|
'pw_protobuf/pw_protobuf_protos/status.proto',
|
|
'pw_protobuf/pw_protobuf_protos/common.proto',
|
|
'pw_tokenizer/options.proto',
|
|
'pw_log/log.proto',
|
|
'pw_rpc/ts/test2.proto',
|
|
'pw_rpc/internal/packet.proto',
|
|
'pw_protobuf_compiler/pw_protobuf_compiler_protos/nested/more_nesting/test.proto',
|
|
'pw_protobuf_compiler/pw_protobuf_compiler_protos/test.proto',
|
|
];
|
|
|
|
// Replace these import statements so they are actual paths to proto files.
|
|
const remapImports = {
|
|
'pw_protobuf_protos/common.proto':
|
|
'pw_protobuf/pw_protobuf_protos/common.proto',
|
|
'pw_tokenizer/proto/options.proto': 'pw_tokenizer/options.proto',
|
|
};
|
|
|
|
// Only modify the .proto files when running this builder and then restore any
|
|
// modified .proto files to their original states after the builder has finished
|
|
// running.
|
|
const restoreProtoList = [];
|
|
protos.forEach((protoPath) => {
|
|
const protoData = fs.readFileSync(protoPath, 'utf-8');
|
|
let newProtoData = protoData;
|
|
Object.keys(remapImports).forEach((remapImportFrom) => {
|
|
if (protoData.indexOf(`import "${remapImportFrom}"`) !== -1) {
|
|
newProtoData = newProtoData.replaceAll(
|
|
remapImportFrom,
|
|
remapImports[remapImportFrom],
|
|
);
|
|
}
|
|
});
|
|
if (protoData !== newProtoData) {
|
|
restoreProtoList.push([protoPath, protoData]);
|
|
fs.writeFileSync(protoPath, newProtoData);
|
|
}
|
|
});
|
|
|
|
run(
|
|
'ts-node',
|
|
[`./pw_protobuf_compiler/ts/build.ts`, `--out dist/protos`].concat(
|
|
protos.map((proto) => `-p ${proto}`),
|
|
),
|
|
).then(() => {
|
|
restoreProtoList.forEach((restoreProtoData) => {
|
|
fs.writeFileSync(restoreProtoData[0], restoreProtoData[1]);
|
|
});
|
|
});
|