# HG changeset patch # User Florent Aide <florent.aide@gmail.com> # Date 1709302555 -3600 # Fri Mar 01 15:15:55 2024 +0100 # Node ID 14f3b29273022be279e83ceef909b87e03ee045f # Parent 06c3d38a1f2e0437459ad9a72231669182d9fe4c actually plug version control in the right place diff --git a/lib/version.go b/lib/version.go new file mode 100644 --- /dev/null +++ b/lib/version.go @@ -0,0 +1,25 @@ +package beaver + +import ( + "fmt" + + hv "github.com/hashicorp/go-version" +) + +func ControlVersions(desired, actual string) error { + desiredVersion, err := hv.NewVersion(desired) + if err != nil { + return fmt.Errorf("failed to parse desired beaver version: %w", err) + } + + actualVersion, err := hv.NewVersion(actual) + if err != nil { + return fmt.Errorf("failed to parse actual beaver version: %w", err) + } + + if !desiredVersion.Equal(actualVersion) { + return fmt.Errorf("desired beaver version is not equal to actual beaver version, %s != %s", desiredVersion.String(), actualVersion.String()) + } + + return nil +} diff --git a/runner/cmd_config.go b/runner/cmd_config.go --- a/runner/cmd_config.go +++ b/runner/cmd_config.go @@ -9,6 +9,8 @@ "strings" "github.com/rs/zerolog" + + beaver "orus.io/orus-io/beaver/lib" ) const ( @@ -16,7 +18,7 @@ YttType = "ytt" ) -// type alias describing ytt arguments +// Ytt is a type alias describing ytt arguments type Ytt []string type CmdSpec struct { @@ -189,6 +191,11 @@ } c.Layers = append(c.Layers, absDir) + if config.BeaverVersion != "" && beaver.Version() != "" { + if err := beaver.ControlVersions(config.BeaverVersion, beaver.Version()); err != nil { + return nil, nil, err + } + } configLayers = append(configLayers, config) if config == nil || (len(config.Inherits) == 0 && config.Inherit == "") { diff --git a/runner/config.go b/runner/config.go --- a/runner/config.go +++ b/runner/config.go @@ -5,10 +5,7 @@ "os" "path/filepath" - "github.com/hashicorp/go-version" "gopkg.in/yaml.v3" - - beaver "orus.io/orus-io/beaver/lib" ) // Sha define sha feature parameter @@ -117,29 +114,5 @@ return &config, nil } - if config.BeaverVersion != "" && beaver.Version() != "" { - if err := ControlVersions(config.BeaverVersion, beaver.Version()); err != nil { - return nil, err - } - } - return nil, fmt.Errorf("no beaver file found in %s", configDir) } - -func ControlVersions(desired, actual string) error { - desiredVersion, err := version.NewVersion(desired) - if err != nil { - return fmt.Errorf("failed to parse desired beaver version: %w", err) - } - - actualVersion, err := version.NewVersion(actual) - if err != nil { - return fmt.Errorf("failed to parse actual beaver version: %w", err) - } - - if !desiredVersion.Equal(actualVersion) { - return fmt.Errorf("desired beaver version is not equal to actual beaver version, %s != %s", desiredVersion.String(), actualVersion.String()) - } - - return nil -} diff --git a/runner/config_test.go b/runner/config_test.go --- a/runner/config_test.go +++ b/runner/config_test.go @@ -12,6 +12,7 @@ "github.com/stretchr/testify/require" "gopkg.in/yaml.v3" + beaver "orus.io/orus-io/beaver/lib" "orus.io/orus-io/beaver/runner" "orus.io/orus-io/beaver/testutils" ) @@ -38,14 +39,14 @@ func TestConfigVersionValid(t *testing.T) { config, err := runner.NewConfig(filepath.Join(versionTest, "validbase")) require.NoError(t, err) - err = runner.ControlVersions(config.BeaverVersion, "3.2.3") + err = beaver.ControlVersions(config.BeaverVersion, "3.2.3") require.NoError(t, err) } func TestConfigVersionInValid(t *testing.T) { config, err := runner.NewConfig(filepath.Join(versionTest, "invalidbase")) require.NoError(t, err) - err = runner.ControlVersions(config.BeaverVersion, "3.2.3") + err = beaver.ControlVersions(config.BeaverVersion, "3.2.3") require.Error(t, err) }