in cmd/acr/purge.go [444:470]
func countTagsByManifest(ctx context.Context, acrClient api.AcrCLIClientInterface, repoName string) (map[string]int, error) {
tagsCount := map[string]int{}
lastTag := ""
resultTags, err := acrClient.GetAcrTags(ctx, repoName, "", lastTag)
if err != nil {
if resultTags != nil && resultTags.Response.Response != nil && resultTags.StatusCode == http.StatusNotFound {
//Repository not found, will be handled in the GetAcrManifests call
return nil, nil
}
return nil, err
}
for resultTags != nil && resultTags.TagsAttributes != nil {
tags := *resultTags.TagsAttributes
for _, tag := range tags {
// if a digest already exists in the map then add 1 to the number of tags it has.
tagsCount[*tag.Digest]++
}
lastTag = *tags[len(tags)-1].Name
// Keep on iterating until the resultTags or resultTags.TagsAttributes is nil
resultTags, err = acrClient.GetAcrTags(ctx, repoName, "", lastTag)
if err != nil {
return nil, err
}
}
return tagsCount, nil
}