Fix repo tag count when a repo name is a prefix for another repo name(s)

This commit is contained in:
Roman Vynar 2024-05-06 16:47:37 +03:00
parent c7c3a815fb
commit b49076db7c
3 changed files with 8 additions and 4 deletions

View File

@ -1,5 +1,9 @@
## Changelog ## Changelog
## UNRELEASED
* Fix repo tag count when a repo name is a prefix for another repo name(s)
## 0.10.1 (2024-04-19) ## 0.10.1 (2024-04-19)
* Rename cmd flag `-purge-from-repos` to `-purge-include-repos` to purge tags only for the specified repositories. * Rename cmd flag `-purge-from-repos` to `-purge-include-repos` to purge tags only for the specified repositories.

View File

@ -272,8 +272,8 @@ func (c *Client) GetImageCreated(imageRef string) time.Time {
return cfg.Created.Time return cfg.Created.Time
} }
// TagCounts return map with tag counts according to the provided list of repos/sub-repos etc. // SubRepoTagCounts return map with tag counts according to the provided list of repos/sub-repos etc.
func (c *Client) TagCounts(repoPath string, repos []string) map[string]int { func (c *Client) SubRepoTagCounts(repoPath string, repos []string) map[string]int {
counts := map[string]int{} counts := map[string]int{}
for _, r := range repos { for _, r := range repos {
subRepo := r subRepo := r
@ -281,7 +281,7 @@ func (c *Client) TagCounts(repoPath string, repos []string) map[string]int {
subRepo = repoPath + "/" + r subRepo = repoPath + "/" + r
} }
for k, v := range c.tagCounts { for k, v := range c.tagCounts {
if strings.HasPrefix(k, subRepo) { if k == subRepo || strings.HasPrefix(k, subRepo+"/") {
counts[subRepo] = counts[subRepo] + v counts[subRepo] = counts[subRepo] + v
} }
} }

2
web.go
View File

@ -76,7 +76,7 @@ func (a *apiClient) viewCatalog(c echo.Context) error {
} }
data.Set("repos", repos) data.Set("repos", repos)
data.Set("isCatalogReady", a.client.IsCatalogReady()) data.Set("isCatalogReady", a.client.IsCatalogReady())
data.Set("tagCounts", a.client.TagCounts(repoPath, repos)) data.Set("tagCounts", a.client.SubRepoTagCounts(repoPath, repos))
data.Set("tags", tags) data.Set("tags", tags)
if repoPath != "" && (len(repos) > 0 || len(tags) > 0) { if repoPath != "" && (len(repos) > 0 || len(tags) > 0) {
// Do not show events in the root of catalog. // Do not show events in the root of catalog.