in tooling/mcerepkg/internal/olm/extract.go [113:147]
func IsOLMBundleImage(image containerregistrypkgv1.Image) (isOLM bool, err error) {
var (
packageManifestFound bool
manifestsFolderFound bool
metadataFolderFound bool
)
reader := mutate.Extract(image)
defer func() {
if cErr := reader.Close(); err == nil && cErr != nil {
err = cErr
}
}()
tarReader := tar.NewReader(reader)
for {
hdr, err := tarReader.Next()
if err != nil && errors.Is(err, io.EOF) {
break
}
pkgManifestPath := filepath.Join(OCIPathPrefix, PackageManifestFilename)
switch hdr.Name {
case pkgManifestPath + ".yml", pkgManifestPath + ".yaml":
packageManifestFound = true
}
if strings.HasPrefix(hdr.Name, olmManifestFolder+"/") {
manifestsFolderFound = true
}
if strings.HasPrefix(hdr.Name, olmMetadataFolder+"/") {
metadataFolderFound = true
}
}
return !packageManifestFound && manifestsFolderFound && metadataFolderFound, nil
}