@@ -349,9 +349,8 @@ func (o *ExtractOptions) Run(ctx context.Context) error {
349
349
}
350
350
}
351
351
352
- tarEntryCallbacks := []extract.TarEntryFunc {}
353
-
354
352
var manifestErrs []error
353
+ // o.ExtractManifests implies o.File == ""
355
354
if o .ExtractManifests {
356
355
expectedProviderSpecKind := credRequestCloudProviderSpecKindMapping [o .Cloud ]
357
356
@@ -380,7 +379,7 @@ func (o *ExtractOptions) Run(ctx context.Context) error {
380
379
include = newIncluder (inclusionConfig )
381
380
}
382
381
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 ) {
384
383
if hdr .Name == "image-references" && ! o .CredentialsRequests {
385
384
buf := & bytes.Buffer {}
386
385
if _ , err := io .Copy (buf , r ); err != nil {
@@ -488,42 +487,18 @@ func (o *ExtractOptions) Run(ctx context.Context) error {
488
487
}
489
488
}
490
489
return true , nil
491
- })
490
+ }
492
491
}
493
492
494
493
fileFound := false
495
494
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 ) {
497
496
if hdr .Name != o .File {
498
497
return true , nil
499
498
}
500
499
fileFound = true
501
500
_ , err := io .Copy (o .Out , r )
502
501
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
527
502
}
528
503
}
529
504
0 commit comments