@@ -349,9 +349,8 @@ func (o *ExtractOptions) Run(ctx context.Context) error {
349349 }
350350 }
351351
352- tarEntryCallbacks := []extract.TarEntryFunc {}
353-
354352 var manifestErrs []error
353+ // o.ExtractManifests implies o.File == ""
355354 if o .ExtractManifests {
356355 expectedProviderSpecKind := credRequestCloudProviderSpecKindMapping [o .Cloud ]
357356
@@ -380,7 +379,7 @@ func (o *ExtractOptions) Run(ctx context.Context) error {
380379 include = newIncluder (inclusionConfig )
381380 }
382381
383- tarEntryCallbacks = append ( tarEntryCallbacks , func (hdr * tar.Header , _ extract.LayerInfo , r io.Reader ) (bool , error ) {
382+ opts . TarEntryCallback = func (hdr * tar.Header , _ extract.LayerInfo , r io.Reader ) (bool , error ) {
384383 if hdr .Name == "image-references" && ! o .CredentialsRequests {
385384 buf := & bytes.Buffer {}
386385 if _ , err := io .Copy (buf , r ); err != nil {
@@ -488,42 +487,18 @@ func (o *ExtractOptions) Run(ctx context.Context) error {
488487 }
489488 }
490489 return true , nil
491- })
490+ }
492491 }
493492
494493 fileFound := false
495494 if o .File != "" {
496- tarEntryCallbacks = append ( tarEntryCallbacks , func (hdr * tar.Header , _ extract.LayerInfo , r io.Reader ) (bool , error ) {
495+ opts . TarEntryCallback = func (hdr * tar.Header , _ extract.LayerInfo , r io.Reader ) (bool , error ) {
497496 if hdr .Name != o .File {
498497 return true , nil
499498 }
500499 fileFound = true
501500 _ , err := io .Copy (o .Out , r )
502501 return false , err
503- })
504- }
505-
506- if len (tarEntryCallbacks ) > 0 {
507- tarEntryCallbacksDone := make ([]bool , len (tarEntryCallbacks ))
508- opts .TarEntryCallback = func (hdr * tar.Header , layer extract.LayerInfo , r io.Reader ) (bool , error ) {
509- for i , callback := range tarEntryCallbacks {
510- if tarEntryCallbacksDone [i ] {
511- continue
512- }
513- if cont , err := callback (hdr , layer , r ); err != nil {
514- return cont , err
515- } else if ! cont {
516- tarEntryCallbacksDone [i ] = true
517- }
518- }
519-
520- for _ , done := range tarEntryCallbacksDone {
521- if ! done {
522- return true , nil // still some callbacks that want to keep working
523- }
524- }
525-
526- return false , nil
527502 }
528503 }
529504
0 commit comments