summaryrefslogtreecommitdiff
path: root/funcs/semver.go
diff options
context:
space:
mode:
Diffstat (limited to 'funcs/semver.go')
-rw-r--r--funcs/semver.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/funcs/semver.go b/funcs/semver.go
new file mode 100644
index 00000000..0212c998
--- /dev/null
+++ b/funcs/semver.go
@@ -0,0 +1,40 @@
+package funcs
+
+import (
+ "context"
+
+ "github.com/Masterminds/semver/v3"
+)
+
+// CreateSemverFuncs -
+func CreateSemverFuncs(ctx context.Context) map[string]interface{} {
+ ns := &SemverFuncs{ctx}
+ return map[string]interface{}{
+ "semver": func() interface{} { return ns },
+ }
+}
+
+// SemverFuncs -
+type SemverFuncs struct {
+ ctx context.Context
+}
+
+// Semver -
+func (SemverFuncs) Semver(version string) (*semver.Version, error) {
+ return semver.NewVersion(version)
+}
+
+// CheckConstraint -
+func (SemverFuncs) CheckConstraint(constraint, in string) (bool, error) {
+ c, err := semver.NewConstraint(constraint)
+ if err != nil {
+ return false, err
+ }
+
+ v, err := semver.NewVersion(in)
+ if err != nil {
+ return false, err
+ }
+
+ return c.Check(v), nil
+}