diff options
| author | rillig <rillig@pkgsrc.org> | 2018-12-17 00:15:39 +0000 |
|---|---|---|
| committer | rillig <rillig@pkgsrc.org> | 2018-12-17 00:15:39 +0000 |
| commit | e6556331ee09765fb6455f21118582024d11052d (patch) | |
| tree | 4fc4a1037677a7ced6b069b69c5e6dd5c44afe43 /pkgtools/pkglint/files/pkgver | |
| parent | 36b175ee4c46e94c1ec95d91a022c222fb2d9f7b (diff) | |
| download | pkgsrc-e6556331ee09765fb6455f21118582024d11052d.tar.gz | |
pkgtools/pkglint: update to 5.6.9
Changes since 5.6.8:
* In addition to the pkglint binary, the whole pkglint code is installed as
a library, so that other packages can use the code for doing their own
checks on pkgsrc packages, Makefiles, shell programs, or the other file
types from pkgsrc.
* BUILDLINK_*.* may be used in all files.
* Lots of refactorings
Diffstat (limited to 'pkgtools/pkglint/files/pkgver')
| -rw-r--r-- | pkgtools/pkglint/files/pkgver/vercmp.go | 56 |
1 files changed, 21 insertions, 35 deletions
diff --git a/pkgtools/pkglint/files/pkgver/vercmp.go b/pkgtools/pkglint/files/pkgver/vercmp.go index 5b6cd8edcd0..2cc7a05be0f 100644 --- a/pkgtools/pkglint/files/pkgver/vercmp.go +++ b/pkgtools/pkglint/files/pkgver/vercmp.go @@ -3,6 +3,8 @@ package pkgver // See pkgtools/pkg_install/files/lib/dewey.c import ( + "netbsd.org/pkglint/textproc" + "strconv" "strings" ) @@ -42,50 +44,34 @@ type version struct { func newVersion(vstr string) *version { v := new(version) - rest := strings.ToLower(vstr) - for rest != "" { + lex := textproc.NewLexer(strings.ToLower(vstr)) + for !lex.EOF() { + switch { - case isdigit(rest[0]): - n := 0 - i := 0 - for i < len(rest) && isdigit(rest[i]) { - n = 10*n + int(rest[i]-'0') - i++ - } - rest = rest[i:] + case lex.TestByteSet(textproc.Digit): + num := lex.NextBytesSet(textproc.Digit) + n, _ := strconv.Atoi(num) v.Add(n) - case rest[0] == '_' || rest[0] == '.': + case lex.SkipByte('_') || lex.SkipByte('.'): v.Add(0) - rest = rest[1:] - case strings.HasPrefix(rest, "alpha"): + case lex.SkipString("alpha"): v.Add(-3) - rest = rest[5:] - case strings.HasPrefix(rest, "beta"): + case lex.SkipString("beta"): v.Add(-2) - rest = rest[4:] - case strings.HasPrefix(rest, "pre"): + case lex.SkipString("pre"): v.Add(-1) - rest = rest[3:] - case strings.HasPrefix(rest, "rc"): + case lex.SkipString("rc"): v.Add(-1) - rest = rest[2:] - case strings.HasPrefix(rest, "pl"): + case lex.SkipString("pl"): v.Add(0) - rest = rest[2:] - case strings.HasPrefix(rest, "nb"): - i := 2 - n := 0 - for i < len(rest) && isdigit(rest[i]) { - n = 10*n + int(rest[i]-'0') - i++ - } - v.nb = n - rest = rest[i:] - case rest[0]-'a' <= 'z'-'a': - v.Add(int(rest[0] - 'a' + 1)) - rest = rest[1:] + case lex.SkipString("nb"): + num := lex.NextBytesSet(textproc.Digit) + v.nb, _ = strconv.Atoi(num) + case lex.TestByteSet(textproc.Lower): + v.Add(int(lex.Rest()[0] - 'a' + 1)) + lex.Skip(1) default: - rest = rest[1:] + lex.Skip(1) } } return v |
