mirror of
https://github.com/project-zot/zot.git
synced 2026-06-15 11:37:56 +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>
82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
//go:build !metrics
|
|
// +build !metrics
|
|
|
|
package cli
|
|
|
|
import (
|
|
"github.com/go-viper/mapstructure/v2"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
|
|
zerr "zotregistry.dev/zot/v2/errors"
|
|
"zotregistry.dev/zot/v2/pkg/exporter/api"
|
|
"zotregistry.dev/zot/v2/pkg/log"
|
|
)
|
|
|
|
// metadataConfig reports metadata after parsing, which we use to track
|
|
// errors.
|
|
func metadataConfig(md *mapstructure.Metadata) viper.DecoderConfigOption {
|
|
return func(c *mapstructure.DecoderConfig) {
|
|
c.Metadata = md
|
|
}
|
|
}
|
|
|
|
func NewExporterCmd() *cobra.Command {
|
|
config := api.DefaultConfig()
|
|
|
|
// "config"
|
|
configCmd := &cobra.Command{
|
|
Use: "config <config_file>",
|
|
Aliases: []string{"config"},
|
|
Short: "`config` node exporter properties",
|
|
Long: "`config` node exporter properties",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
if len(args) > 0 {
|
|
loadConfiguration(config, args[0])
|
|
}
|
|
|
|
c := api.NewController(config)
|
|
c.Run()
|
|
},
|
|
}
|
|
|
|
// "node_exporter"
|
|
exporterCmd := &cobra.Command{
|
|
Use: "zxp",
|
|
Short: "`zxp`",
|
|
Long: "`zxp`",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
_ = cmd.Usage()
|
|
cmd.SilenceErrors = false
|
|
},
|
|
}
|
|
|
|
exporterCmd.AddCommand(configCmd)
|
|
|
|
return exporterCmd
|
|
}
|
|
|
|
func loadConfiguration(config *api.Config, configPath string) {
|
|
viper.SetConfigFile(configPath)
|
|
|
|
logger := log.NewLogger("info", "")
|
|
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
logger.Panic().Err(err).Str("config", configPath).Msg("failed to read configuration")
|
|
}
|
|
|
|
metaData := &mapstructure.Metadata{}
|
|
if err := viper.Unmarshal(&config, metadataConfig(metaData)); err != nil {
|
|
logger.Panic().Err(err).Str("config", configPath).Msg("failed to unmarshal config")
|
|
}
|
|
|
|
if len(metaData.Keys) == 0 {
|
|
logger.Panic().Err(zerr.ErrBadConfig).Str("config", configPath).Msg("bad configuration")
|
|
}
|
|
|
|
if len(metaData.Unused) > 0 {
|
|
logger.Panic().Err(zerr.ErrBadConfig).Interface("unknown fields", metaData.Unused).
|
|
Str("config", configPath).Msg("bad configuration")
|
|
}
|
|
}
|