From a32f7484c5f92338f3b61948612bbed99fa4aa75 Mon Sep 17 00:00:00 2001 From: emil-e Date: Thu, 29 Apr 2021 17:06:36 +0200 Subject: [PATCH] Only generate files in fileToGenerate (#283) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Emil Sahlén --- integration/codegen.ts | 3 ++- src/plugin.ts | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/integration/codegen.ts b/integration/codegen.ts index 407473b02..8ebf4f5a1 100644 --- a/integration/codegen.ts +++ b/integration/codegen.ts @@ -8,6 +8,7 @@ import { prefixDisableLinter } from '../src/utils'; import { getTsPoetOpts, optionsFromParameter } from '../src/options'; import { Context } from '../src/context'; import { generateTypeRegistry } from '../src/generate-type-registry'; +import { protoFilesToGenerate } from '../src/plugin'; /** * Generates output for our integration tests from their example proto files. @@ -31,7 +32,7 @@ async function generate(binFile: string, baseDir: string, parameter: string) { const options = optionsFromParameter(parameter || ''); const typeMap = createTypeMap(request, options); - for (let file of request.protoFile) { + for (let file of protoFilesToGenerate(request)) { // Make a different utils per file to track per-file usage const utils = makeUtils(options); const ctx: Context = { options, typeMap, utils }; diff --git a/src/plugin.ts b/src/plugin.ts index a18149209..ee9dd457c 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -1,4 +1,9 @@ -import { CodeGeneratorRequest, CodeGeneratorResponse, CodeGeneratorResponse_Feature } from 'ts-proto-descriptors'; +import { + CodeGeneratorRequest, + CodeGeneratorResponse, + CodeGeneratorResponse_Feature, + FileDescriptorProto, +} from 'ts-proto-descriptors'; import { promisify } from 'util'; import { prefixDisableLinter, readToBuffer } from './utils'; import { generateFile, makeUtils } from './main'; @@ -7,6 +12,10 @@ import { Context } from './context'; import { getTsPoetOpts, optionsFromParameter } from './options'; import { generateTypeRegistry } from './generate-type-registry'; +export function protoFilesToGenerate(request: CodeGeneratorRequest): FileDescriptorProto[] { + return request.protoFile.filter((f) => request.fileToGenerate.includes(f.name)); +} + // this would be the plugin called by the protoc compiler async function main() { const stdin = await readToBuffer(process.stdin); @@ -20,7 +29,7 @@ async function main() { const ctx: Context = { typeMap, options, utils }; const files = await Promise.all( - request.protoFile.map(async (file) => { + protoFilesToGenerate(request).map(async (file) => { const [path, code] = generateFile(ctx, file); const spec = await code.toStringWithImports({ ...getTsPoetOpts(options), path }); return { name: path, content: prefixDisableLinter(spec) };