diff --git a/lib/version.go b/lib/version.go new file mode 100644 index 0000000000000000000000000000000000000000..d709d1be1f14803f523a3f7420c22a387a5efdbe_bGliL3ZlcnNpb24uZ28= --- /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 index 06c3d38a1f2e0437459ad9a72231669182d9fe4c_cnVubmVyL2NtZF9jb25maWcuZ28=..d709d1be1f14803f523a3f7420c22a387a5efdbe_cnVubmVyL2NtZF9jb25maWcuZ28= 100644 --- a/runner/cmd_config.go +++ b/runner/cmd_config.go @@ -9,6 +9,7 @@ "strings" "github.com/rs/zerolog" + beaver "orus.io/orus-io/beaver/lib" ) const ( @@ -16,7 +17,7 @@ YttType = "ytt" ) -// type alias describing ytt arguments +// Ytt is a type alias describing ytt arguments type Ytt []string type CmdSpec struct { @@ -189,6 +190,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 index 06c3d38a1f2e0437459ad9a72231669182d9fe4c_cnVubmVyL2NvbmZpZy5nbw==..d709d1be1f14803f523a3f7420c22a387a5efdbe_cnVubmVyL2NvbmZpZy5nbw== 100644 --- a/runner/config.go +++ b/runner/config.go @@ -5,5 +5,4 @@ "os" "path/filepath" - "github.com/hashicorp/go-version" "gopkg.in/yaml.v3" @@ -9,6 +8,4 @@ "gopkg.in/yaml.v3" - - beaver "orus.io/orus-io/beaver/lib" ) // Sha define sha feature parameter @@ -117,11 +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) } @@ -126,20 +117,2 @@ 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 -}