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>
71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package storage
|
|
|
|
import (
|
|
"strings"
|
|
|
|
storageTypes "zotregistry.dev/zot/v2/pkg/storage/types"
|
|
)
|
|
|
|
const (
|
|
CosignType = "cosign"
|
|
NotationType = "notation"
|
|
DefaultStorePath = "/"
|
|
)
|
|
|
|
type StoreController struct {
|
|
DefaultStore storageTypes.ImageStore
|
|
SubStore map[string]storageTypes.ImageStore
|
|
}
|
|
|
|
func GetRoutePrefix(name string) string {
|
|
names := strings.SplitN(name, "/", 2) //nolint:mnd
|
|
|
|
if len(names) != 2 { //nolint:mnd
|
|
// it means route is of global storage e.g "centos:latest"
|
|
if len(names) == 1 {
|
|
return "/"
|
|
}
|
|
}
|
|
|
|
return "/" + names[0]
|
|
}
|
|
|
|
func (sc StoreController) GetStorePath(name string) string {
|
|
if sc.SubStore != nil && name != "" {
|
|
subStorePath := GetRoutePrefix(name)
|
|
|
|
_, ok := sc.SubStore[subStorePath]
|
|
if !ok {
|
|
return DefaultStorePath
|
|
}
|
|
|
|
return subStorePath
|
|
}
|
|
|
|
return DefaultStorePath
|
|
}
|
|
|
|
func (sc StoreController) GetImageStore(name string) storageTypes.ImageStore {
|
|
if sc.SubStore != nil {
|
|
// SubStore is being provided, now we need to find equivalent image store and this will be found by splitting name
|
|
prefixName := GetRoutePrefix(name)
|
|
|
|
imgStore, ok := sc.SubStore[prefixName]
|
|
if !ok {
|
|
imgStore = sc.DefaultStore
|
|
}
|
|
|
|
return imgStore
|
|
}
|
|
|
|
return sc.DefaultStore
|
|
}
|
|
|
|
func (sc StoreController) GetDefaultImageStore() storageTypes.ImageStore {
|
|
return sc.DefaultStore
|
|
}
|
|
|
|
func (sc StoreController) GetImageSubStores() map[string]storageTypes.ImageStore {
|
|
return sc.SubStore
|
|
}
|