Fix: Compare path properly when list repository in catalog. #1854

Signed-off-by: Sebastien Coavoux <alignak@pyseb.cx>
This commit is contained in:
Sebastien Coavoux 2016-07-21 10:38:42 -04:00 committed by Richard Scothern
parent 22a59f2512
commit 0567fa3c2a

View file

@ -39,7 +39,7 @@ func (reg *registry) Repositories(ctx context.Context, repos []string, last stri
_, file := path.Split(repoPath)
if file == "_layers" {
repoPath = strings.TrimSuffix(repoPath, "/_layers")
if repoPath > last {
if pathGreaterThan(repoPath, last) {
foundRepos = append(foundRepos, repoPath)
}
return ErrSkipDir
@ -95,3 +95,23 @@ func (reg *registry) Enumerate(ctx context.Context, ingester func(string) error)
return nil
}
func pathGreaterThan(pathX, pathY string) (b bool) {
splitPathX := strings.SplitN(pathX, "/", 2)
splitPathY := strings.SplitN(pathY, "/", 2)
if splitPathX[0] == splitPathY[0] {
if len(splitPathX) == 1 && len(splitPathY) == 1 {
return false
} else if len(splitPathX) == 1 && len(splitPathY) != 1 {
return false
} else if len(splitPathX) != 1 && len(splitPathY) == 1 {
return true
}
return pathGreaterThan(splitPathX[1], splitPathY[1])
}
return splitPathX[0] > splitPathY[0]
}