diff --git a/internal/builder/config.go b/internal/builder/config.go index fa253e8822a3..b771871dd3d0 100644 --- a/internal/builder/config.go +++ b/internal/builder/config.go @@ -32,6 +32,9 @@ const defaultOtelColVersion = "0.36.0" // ErrInvalidGoMod indicates an invalid gomod var ErrInvalidGoMod = errors.New("invalid gomod specification for module") +// ErrDeprecatedCore indicates deprecated core +var ErrDeprecatedCore = errors.New("mod.Core has deprecated, you should not be used anymore and required to be set mod.GoMod instead") + // Config holds the builder's configuration type Config struct { Logger logr.Logger @@ -64,7 +67,8 @@ type Module struct { Import string `mapstructure:"import"` // if not specified, this is the path part of the go mods GoMod string `mapstructure:"gomod"` // a gomod-compatible spec for the module Path string `mapstructure:"path"` // an optional path to the local version of this module - Core bool `mapstructure:"core"` // whether this module comes from core, meaning that no further dependencies will be added + Core *bool `mapstructure:"core"` // whether this module comes from core. For this property isn't referred from anywhere, it might be removed. please see #15. + } // DefaultConfig creates a new config, with default values @@ -134,7 +138,10 @@ func (c *Config) ParseModules() error { func parseModules(mods []Module) ([]Module, error) { var parsedModules []Module for _, mod := range mods { - if mod.GoMod == "" && !mod.Core { + if mod.Core != nil { + return mods, ErrDeprecatedCore + } + if mod.GoMod == "" { return mods, fmt.Errorf("%w, module: %q", ErrInvalidGoMod, mod.GoMod) } diff --git a/internal/builder/config_test.go b/internal/builder/config_test.go index 08fab22c821b..0b3cd9ba7ef3 100644 --- a/internal/builder/config_test.go +++ b/internal/builder/config_test.go @@ -65,10 +65,17 @@ func TestRelativePath(t *testing.T) { func TestModuleFromCore(t *testing.T) { // prepare cfg := Config{ - Extensions: []Module{{ - Core: true, - Import: "go.opentelemetry.io/collector/receiver/jaegerreceiver", - }}, + Extensions: []Module{ // see issue-12 + { + Import: "go.opentelemetry.io/collector/receiver/jaegerreceiver", + GoMod: "go.opentelemetry.io/collector v0.36.0", + }, + { + Import: "go.opentelemetry.io/collector/receiver/jaegerreceiver", + GoMod: "go.opentelemetry.io/collector v0.36.0", + Core: nil, + }, + }, } // test @@ -77,7 +84,30 @@ func TestModuleFromCore(t *testing.T) { // verify assert.True(t, strings.HasPrefix(cfg.Extensions[0].Name, "jaegerreceiver")) - assert.Empty(t, cfg.Extensions[0].GoMod) +} + +func TestDeprecatedCore(t *testing.T) { + // prepare + coreTrue := true + coreFalse := false + cfg := Config{ + Extensions: []Module{ + { + Import: "go.opentelemetry.io/collector/receiver/jaegerreceiver", + Core: &coreTrue, + }, + { + Import: "go.opentelemetry.io/collector/receiver/jaegerreceiver", + Core: &coreFalse, + }, + }, + } + + // test + err := cfg.ParseModules() + + // verify + assert.True(t, errors.Is(err, ErrDeprecatedCore)) } func TestInvalidModule(t *testing.T) { diff --git a/test/nocore.builder.yaml b/test/nocore.builder.yaml index 49dec4b20020..8cee42670dcb 100644 --- a/test/nocore.builder.yaml +++ b/test/nocore.builder.yaml @@ -5,10 +5,10 @@ dist: receivers: - import: go.opentelemetry.io/collector/receiver/otlpreceiver - core: true + gomod: go.opentelemetry.io/collector v0.36.0 exporters: - import: go.opentelemetry.io/collector/exporter/loggingexporter - core: true + gomod: go.opentelemetry.io/collector v0.36.0 extensions: - import: go.opentelemetry.io/collector/extension/zpagesextension - core: true + gomod: go.opentelemetry.io/collector v0.36.0