...
1
2
3 package semver
4
5 import (
6 "log"
7 "regexp"
8
9 "errors"
10 )
11
12 const (
13
14
15 SemverRegexpString = `^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$`
16 )
17
18 func init() {
19 _, err := regexp.Compile(SemverRegexpString)
20 if err != nil {
21 log.Fatal("semver.init: failed to compile the SemVer regular expression")
22 }
23 }
24
25
26
27 func IsValidSemver(ver string) error {
28
29
30 ok, _ := regexp.MatchString(SemverRegexpString, ver)
31
32 if !ok {
33 return ErrInvalidSemVer
34 }
35 return nil
36 }
37
38
39
40 var ErrInvalidSemVer = errors.New("invalid semver provided")
41
View as plain text