From 3fe139f57a3191e8a3381f3671e641c6c9e2e25f Mon Sep 17 00:00:00 2001 From: yugo-horie Date: Sat, 2 Oct 2021 09:17:35 +0900 Subject: [PATCH] Remove Core from Module type Fixes #15 Signed-off-by: yugo-horie --- internal/builder/config.go | 11 +++++++-- internal/builder/config_test.go | 40 ++++++++++++++++++++++++++++----- test/nocore.builder.yaml | 6 ++--- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/internal/builder/config.go b/internal/builder/config.go index fa253e8..b771871 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 08fab22..0b3cd9b 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 49dec4b..8cee426 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