Support version numbers like pkg (1.4)

This commit is contained in:
Andrey Smirnov
2014-02-17 20:52:37 +04:00
parent b8fd33a92c
commit 506987d31f
2 changed files with 24 additions and 7 deletions
+12 -7
View File
@@ -255,12 +255,17 @@ func ParseDependency(dep string) (d Dependency, err error) {
d.Pkg = strings.TrimSpace(dep[0:i]) d.Pkg = strings.TrimSpace(dep[0:i])
rel := dep[i+1 : i+2] rel := ""
if dep[i+2] == '>' || dep[i+2] == '<' || dep[i+2] == '=' { if dep[i+1] == '>' || dep[i+1] == '<' || dep[i+1] == '=' {
rel += dep[i+2 : i+3] rel += dep[i+1 : i+2]
d.Version = strings.TrimSpace(dep[i+3 : len(dep)-1]) if dep[i+2] == '>' || dep[i+2] == '<' || dep[i+2] == '=' {
rel += dep[i+2 : i+3]
d.Version = strings.TrimSpace(dep[i+3 : len(dep)-1])
} else {
d.Version = strings.TrimSpace(dep[i+2 : len(dep)-1])
}
} else { } else {
d.Version = strings.TrimSpace(dep[i+2 : len(dep)-1]) d.Version = strings.TrimSpace(dep[i+1 : len(dep)-1])
} }
switch rel { switch rel {
@@ -272,10 +277,10 @@ func ParseDependency(dep string) (d Dependency, err error) {
d.Relation = VersionLess d.Relation = VersionLess
case ">>": case ">>":
d.Relation = VersionGreater d.Relation = VersionGreater
case "=": case "", "=":
d.Relation = VersionEqual d.Relation = VersionEqual
default: default:
err = fmt.Errorf("relation unknown: %s", rel) err = fmt.Errorf("relation unknown %#v in dependency %s", rel, dep)
} }
return return
+12
View File
@@ -112,6 +112,18 @@ func (s *VersionSuite) TestParseDependency(c *C) {
c.Check(d.Relation, Equals, VersionGreater) c.Check(d.Relation, Equals, VersionGreater)
c.Check(d.Version, Equals, "1.6") c.Check(d.Version, Equals, "1.6")
d, e = ParseDependency("dpkg(1.6)")
c.Check(e, IsNil)
c.Check(d.Pkg, Equals, "dpkg")
c.Check(d.Relation, Equals, VersionEqual)
c.Check(d.Version, Equals, "1.6")
d, e = ParseDependency("dpkg ( 1.6)")
c.Check(e, IsNil)
c.Check(d.Pkg, Equals, "dpkg")
c.Check(d.Relation, Equals, VersionEqual)
c.Check(d.Version, Equals, "1.6")
d, e = ParseDependency("dpkg (> 1.6)") d, e = ParseDependency("dpkg (> 1.6)")
c.Check(e, IsNil) c.Check(e, IsNil)
c.Check(d.Pkg, Equals, "dpkg") c.Check(d.Pkg, Equals, "dpkg")