mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-09 22:39:53 +00:00
Support for parsing dependencies with architecture like [amd64].
This commit is contained in:
Vendored
+12
-1
@@ -228,8 +228,19 @@ func ParseDependencyVariants(variants string) (l []Dependency, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseDependency parses dependency in format "pkg (>= 1.35)" into parts
|
// ParseDependency parses dependency in format "pkg (>= 1.35) [arch]" into parts
|
||||||
func ParseDependency(dep string) (d Dependency, err error) {
|
func ParseDependency(dep string) (d Dependency, err error) {
|
||||||
|
if strings.HasSuffix(dep, "]") {
|
||||||
|
i := strings.LastIndex(dep, "[")
|
||||||
|
if i == -1 {
|
||||||
|
err = fmt.Errorf("unable to parse dependency: %s", dep)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
d.Architecture = dep[i+1 : len(dep)-1]
|
||||||
|
|
||||||
|
dep = strings.TrimSpace(dep[:i])
|
||||||
|
}
|
||||||
|
|
||||||
if !strings.HasSuffix(dep, ")") {
|
if !strings.HasSuffix(dep, ")") {
|
||||||
d.Pkg = strings.TrimSpace(dep)
|
d.Pkg = strings.TrimSpace(dep)
|
||||||
d.Relation = VersionDontCare
|
d.Relation = VersionDontCare
|
||||||
|
|||||||
Vendored
+21
@@ -104,6 +104,7 @@ func (s *VersionSuite) TestParseDependency(c *C) {
|
|||||||
c.Check(d.Pkg, Equals, "dpkg")
|
c.Check(d.Pkg, Equals, "dpkg")
|
||||||
c.Check(d.Relation, Equals, VersionGreaterOrEqual)
|
c.Check(d.Relation, Equals, VersionGreaterOrEqual)
|
||||||
c.Check(d.Version, Equals, "1.6")
|
c.Check(d.Version, Equals, "1.6")
|
||||||
|
c.Check(d.Architecture, Equals, "")
|
||||||
|
|
||||||
d, e = ParseDependency("dpkg(>>1.6)")
|
d, e = ParseDependency("dpkg(>>1.6)")
|
||||||
c.Check(e, IsNil)
|
c.Check(e, IsNil)
|
||||||
@@ -141,6 +142,20 @@ 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) [i386]")
|
||||||
|
c.Check(e, IsNil)
|
||||||
|
c.Check(d.Pkg, Equals, "dpkg")
|
||||||
|
c.Check(d.Relation, Equals, VersionGreater)
|
||||||
|
c.Check(d.Version, Equals, "1.6")
|
||||||
|
c.Check(d.Architecture, Equals, "i386")
|
||||||
|
|
||||||
|
d, e = ParseDependency("dpkg[i386]")
|
||||||
|
c.Check(e, IsNil)
|
||||||
|
c.Check(d.Pkg, Equals, "dpkg")
|
||||||
|
c.Check(d.Relation, Equals, VersionDontCare)
|
||||||
|
c.Check(d.Version, Equals, "")
|
||||||
|
c.Check(d.Architecture, Equals, "i386")
|
||||||
|
|
||||||
d, e = ParseDependency("dpkg ")
|
d, e = ParseDependency("dpkg ")
|
||||||
c.Check(e, IsNil)
|
c.Check(e, IsNil)
|
||||||
c.Check(d.Pkg, Equals, "dpkg")
|
c.Check(d.Pkg, Equals, "dpkg")
|
||||||
@@ -152,6 +167,12 @@ func (s *VersionSuite) TestParseDependency(c *C) {
|
|||||||
|
|
||||||
d, e = ParseDependency("dpkg==1.6)")
|
d, e = ParseDependency("dpkg==1.6)")
|
||||||
c.Check(e, ErrorMatches, "unable to parse.*")
|
c.Check(e, ErrorMatches, "unable to parse.*")
|
||||||
|
|
||||||
|
d, e = ParseDependency("dpkg i386]")
|
||||||
|
c.Check(e, ErrorMatches, "unable to parse.*")
|
||||||
|
|
||||||
|
d, e = ParseDependency("dpkg ) [i386]")
|
||||||
|
c.Check(e, ErrorMatches, "unable to parse.*")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *VersionSuite) TestParseDependencyVariants(c *C) {
|
func (s *VersionSuite) TestParseDependencyVariants(c *C) {
|
||||||
|
|||||||
Reference in New Issue
Block a user