mirror of
https://github.com/project-zot/zot.git
synced 2026-06-18 05:28:07 +08:00
2402296e9a
* fix: migrate to Go module v2 for proper semantic versioning This change updates the module path from 'zotregistry.dev/zot' to 'zotregistry.dev/zot/v2' to comply with Go's semantic versioning rules. According to Go's module versioning requirements, major version v2+ must include the major version in the module path. The current module path 'zotregistry.dev/zot' only supports v0.x.x and v1.x.x versions, making existing v2.x.x tags (like v2.1.8) unusable. Changes: - Updated go.mod module path to zotregistry.dev/zot/v2 - Updated all internal import paths across 280+ Go source files - Updated configuration files (golangcilint.yaml, gqlgen.yml) - Updated README.md Go reference badge This fix enables proper use of existing v2.x.x Git tags and allows external packages to import zot v2+ versions without compatibility errors. Resolves: Go module import compatibility for v2+ versions Fixes: #3071 Signed-off-by: Luca Muscariello <muscariello@ieee.org> * fix: regenerate GraphQL files with updated v2 import paths The gqlgen tool needs to regenerate the GraphQL schema files after the module path change to use the new v2 imports. Signed-off-by: Luca Muscariello <muscariello@ieee.org> --------- Signed-off-by: Luca Muscariello <muscariello@ieee.org>
77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
package convert
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
ispec "github.com/opencontainers/image-spec/specs-go/v1"
|
|
|
|
zerr "zotregistry.dev/zot/v2/errors"
|
|
"zotregistry.dev/zot/v2/pkg/extensions/search/gql_generated"
|
|
)
|
|
|
|
func getLayersSummaries(manifestContent ispec.Manifest) []*gql_generated.LayerSummary {
|
|
layers := make([]*gql_generated.LayerSummary, 0, len(manifestContent.Layers))
|
|
|
|
for _, layer := range manifestContent.Layers {
|
|
size := strconv.FormatInt(layer.Size, 10)
|
|
digest := layer.Digest.String()
|
|
|
|
layers = append(layers, &gql_generated.LayerSummary{
|
|
Size: &size,
|
|
Digest: &digest,
|
|
})
|
|
}
|
|
|
|
return layers
|
|
}
|
|
|
|
func getAllHistory(manifestContent ispec.Manifest, configContent ispec.Image) (
|
|
[]*gql_generated.LayerHistory, error,
|
|
) {
|
|
allHistory := []*gql_generated.LayerHistory{}
|
|
layerSummaries := getLayersSummaries(manifestContent)
|
|
|
|
history := configContent.History
|
|
if len(history) == 0 {
|
|
// We don't have any image history metadata
|
|
// let's make due with just the layer metadata
|
|
for _, layer := range layerSummaries {
|
|
allHistory = append(allHistory, &gql_generated.LayerHistory{
|
|
Layer: layer,
|
|
HistoryDescription: &gql_generated.HistoryDescription{},
|
|
})
|
|
}
|
|
|
|
return allHistory, nil
|
|
}
|
|
|
|
// Iterator over manifest layers
|
|
var layersIterator int
|
|
// Since we are appending pointers, it is important to iterate with an index over slice
|
|
for i := range history {
|
|
allHistory = append(allHistory, &gql_generated.LayerHistory{
|
|
HistoryDescription: &gql_generated.HistoryDescription{
|
|
Created: history[i].Created,
|
|
CreatedBy: &history[i].CreatedBy,
|
|
Author: &history[i].Author,
|
|
Comment: &history[i].Comment,
|
|
EmptyLayer: &history[i].EmptyLayer,
|
|
},
|
|
})
|
|
|
|
if history[i].EmptyLayer {
|
|
continue
|
|
}
|
|
|
|
if layersIterator+1 > len(manifestContent.Layers) {
|
|
return allHistory, zerr.ErrBadLayerCount
|
|
}
|
|
|
|
allHistory[i].Layer = layerSummaries[layersIterator]
|
|
|
|
layersIterator++
|
|
}
|
|
|
|
return allHistory, nil
|
|
}
|