version.go 635 B

12345678910111213141516171819202122232425262728293031
  1. package logic
  2. import (
  3. "strings"
  4. "unicode"
  5. "github.com/hashicorp/go-version"
  6. )
  7. const MinVersion = "v0.17.0"
  8. // IsVersionCompatible checks that the version passed is compabtible (>=) with MinVersion
  9. func IsVersionComptatible(ver string) bool {
  10. // during dev, assume developers know what they are doing
  11. if ver == "dev" {
  12. return true
  13. }
  14. trimmed := strings.TrimFunc(ver, func(r rune) bool {
  15. return !unicode.IsNumber(r)
  16. })
  17. v, err := version.NewVersion(trimmed)
  18. if err != nil {
  19. return false
  20. }
  21. constraint, err := version.NewConstraint(">= " + MinVersion)
  22. if err != nil {
  23. return false
  24. }
  25. return constraint.Check(v)
  26. }