@@ -21,6 +21,7 @@ import {
2121 getResponsePath ,
2222 getStreamingResponsePath ,
2323 type SourceFormat ,
24+ type TransformPair ,
2425} from "./helpers" ;
2526
2627const GOOGLE_API_BASE = "https://generativelanguage.googleapis.com/v1beta" ;
@@ -218,7 +219,8 @@ export async function captureTransforms(
218219 filter ?: string ,
219220 force ?: boolean ,
220221 requestedPair ?: { source : string ; target : string } ,
221- requestedCases ?: string [ ]
222+ requestedCases ?: string [ ] ,
223+ requestedCaptureProviders ?: string [ ]
222224) : Promise < { captured : number ; skipped : number ; failed : number } > {
223225 mkdirSync ( TRANSFORMS_DIR , { recursive : true } ) ;
224226
@@ -229,6 +231,9 @@ export async function captureTransforms(
229231 const nonStreamingTasks : ( ( ) => Promise < void > ) [ ] = [ ] ;
230232
231233 for ( const p of TRANSFORM_PAIRS ) {
234+ if ( ! isCaptureProviderSelected ( p , requestedCaptureProviders ) ) {
235+ continue ;
236+ }
232237 if (
233238 requestedPair &&
234239 ( p . source !== requestedPair . source || p . target !== requestedPair . target )
@@ -293,6 +298,9 @@ export async function captureTransforms(
293298 const streamingTasks : ( ( ) => Promise < void > ) [ ] = [ ] ;
294299
295300 for ( const streamingPair of STREAMING_PAIRS ) {
301+ if ( ! isCaptureProviderSelected ( streamingPair , requestedCaptureProviders ) ) {
302+ continue ;
303+ }
296304 if (
297305 requestedPair &&
298306 ( streamingPair . source !== requestedPair . source ||
@@ -391,6 +399,18 @@ export async function captureTransforms(
391399 return { captured, skipped, failed } ;
392400}
393401
402+ export function isCaptureProviderSelected (
403+ pair : Pick < TransformPair , "target" | "captureProvider" > ,
404+ requestedCaptureProviders ?: string [ ]
405+ ) : boolean {
406+ if ( ! requestedCaptureProviders ) {
407+ return true ;
408+ }
409+
410+ const captureProvider = pair . captureProvider ?? pair . target ;
411+ return requestedCaptureProviders . includes ( captureProvider ) ;
412+ }
413+
394414export function selectRequestedCases (
395415 caseNames : string [ ] ,
396416 requestedCases ?: string [ ]
@@ -408,6 +428,7 @@ export function parseCaptureTransformArgs(args: string[]): {
408428 force : boolean ;
409429 pair : { source : string ; target : string } | undefined ;
410430 cases : string [ ] | undefined ;
431+ captureProviders : string [ ] | undefined ;
411432} {
412433 const force = args . includes ( "--force" ) ;
413434 const pairIdx = args . indexOf ( "--pair" ) ;
@@ -420,22 +441,34 @@ export function parseCaptureTransformArgs(args: string[]): {
420441 const cases = casesArg
421442 ? casesArg . split ( "," ) . filter ( ( caseName ) => caseName . length > 0 )
422443 : undefined ;
444+ const captureProvidersIdx = args . indexOf ( "--capture-providers" ) ;
445+ const captureProvidersArg =
446+ captureProvidersIdx !== - 1 ? args [ captureProvidersIdx + 1 ] : undefined ;
447+ const captureProviders = captureProvidersArg
448+ ? captureProvidersArg . split ( "," ) . filter ( ( provider ) => provider . length > 0 )
449+ : undefined ;
423450 const filter = args . find (
424451 ( arg , index ) =>
425452 ! arg . startsWith ( "--" ) &&
426453 ( pairIdx === - 1 || index !== pairIdx + 1 ) &&
427- ( casesIdx === - 1 || index !== casesIdx + 1 )
454+ ( casesIdx === - 1 || index !== casesIdx + 1 ) &&
455+ ( captureProvidersIdx === - 1 || index !== captureProvidersIdx + 1 )
428456 ) ;
429457
430- return { filter, force, pair, cases } ;
458+ return { filter, force, pair, cases, captureProviders } ;
431459}
432460
433461async function main ( ) {
434- const { filter, force, pair, cases } = parseCaptureTransformArgs (
435- process . argv . slice ( 2 )
462+ const { filter, force, pair, cases, captureProviders } =
463+ parseCaptureTransformArgs ( process . argv . slice ( 2 ) ) ;
464+
465+ const { failed } = await captureTransforms (
466+ filter ,
467+ force ,
468+ pair ,
469+ cases ,
470+ captureProviders
436471 ) ;
437-
438- const { failed } = await captureTransforms ( filter , force , pair , cases ) ;
439472 process . exit ( failed > 0 ? 1 : 0 ) ;
440473}
441474
0 commit comments