Skip to content

Commit ea5c720

Browse files
Merge pull request #2047 from hongkailiu/OTA-1010-simplify
NO-JIRA: Simplify TarEntryCallback
2 parents d6d8c4b + 305aa89 commit ea5c720

File tree

1 file changed

+4
-29
lines changed

1 file changed

+4
-29
lines changed

pkg/cli/admin/release/extract.go

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)