in scripts/pusher/main.go [245:292]
func fixOCIArchive(dir string) error {
indexPath := filepath.Join(dir, "index.json")
index, err := os.Open(indexPath)
if err != nil {
return fmt.Errorf("opening index: %w", err)
}
defer index.Close()
indexManifest, err := v1.ParseIndexManifest(index)
if err != nil {
return err
}
// only proceed if we get one manifest
if len(indexManifest.Manifests) > 1 {
return nil
}
if !indexManifest.Manifests[0].MediaType.IsIndex() {
return nil
}
digest := indexManifest.Manifests[0].Digest
blobPath := filepath.Join(dir, "blobs", digest.Algorithm, digest.Hex)
imageIndex, err := os.Open(blobPath)
if err != nil {
return err
}
indexManifest, err = v1.ParseIndexManifest(imageIndex)
if err != nil {
return err
}
// only proceed if we get an image manifest
if len(indexManifest.Manifests) == 0 || !indexManifest.Manifests[0].MediaType.IsImage() {
return nil
}
if err := os.Remove(indexPath); err != nil {
return err
}
if err := os.Rename(blobPath, indexPath); err != nil {
return err
}
return nil
}