refactor(filesystem): extract digest filtering into helper function
- Create filterOutDigests helper to reduce code duplication - Apply helper to both updateTagsList and removeFromTagsList - Improves maintainability and reduces duplication per code review
- commit
- 9adcbdc953cee792d01c6529ab749bbe04652f01
- author
- brice · · 2026-02-03 06:56 UTC
- parent
- 96bcae5
- signature
- unsigned
1 file · +13 -16
M internal/adapters/out/filesystem/manifest.go +13 -16
| @@ -303,6 +303,17 @@ func (s *ManifestStorage) deleteManifestContentType(name, reference string) erro | |||
| 303 | 303 | ||
| 304 | 304 | // Tags management helpers | |
| 305 | 305 | ||
| 306 | + | // filterOutDigests removes digest entries from a tag list. | |
| 307 | + | func filterOutDigests(tags []string) []string { | |
| 308 | + | filtered := make([]string, 0, len(tags)) | |
| 309 | + | for _, tag := range tags { | |
| 310 | + | if !validation.IsDigest(tag) { | |
| 311 | + | filtered = append(filtered, tag) | |
| 312 | + | } | |
| 313 | + | } | |
| 314 | + | return filtered | |
| 315 | + | } | |
| 316 | + | ||
| 306 | 317 | func (s *ManifestStorage) updateTagsList(name, reference string) error { | |
| 307 | 318 | if validation.IsDigest(reference) { | |
| 308 | 319 | return nil | |
| @@ -313,14 +324,7 @@ func (s *ManifestStorage) updateTagsList(name, reference string) error { | |||
| 313 | 324 | return err | |
| 314 | 325 | } | |
| 315 | 326 | ||
| 316 | - | // Drop any legacy digest entries before persisting | |
| 317 | - | filtered := make([]string, 0, len(tags)) | |
| 318 | - | for _, tag := range tags { | |
| 319 | - | if !validation.IsDigest(tag) { | |
| 320 | - | filtered = append(filtered, tag) | |
| 321 | - | } | |
| 322 | - | } | |
| 323 | - | tags = filtered | |
| 327 | + | tags = filterOutDigests(tags) | |
| 324 | 328 | ||
| 325 | 329 | // Add tag if not already present | |
| 326 | 330 | for _, tag := range tags { | |
| @@ -339,14 +343,7 @@ func (s *ManifestStorage) removeFromTagsList(name, reference string) error { | |||
| 339 | 343 | return err | |
| 340 | 344 | } | |
| 341 | 345 | ||
| 342 | - | // Drop any legacy digest entries before persisting | |
| 343 | - | filtered := make([]string, 0, len(tags)) | |
| 344 | - | for _, tag := range tags { | |
| 345 | - | if !validation.IsDigest(tag) { | |
| 346 | - | filtered = append(filtered, tag) | |
| 347 | - | } | |
| 348 | - | } | |
| 349 | - | tags = filtered | |
| 346 | + | tags = filterOutDigests(tags) | |
| 350 | 347 | ||
| 351 | 348 | // Remove tag if present | |
| 352 | 349 | var newTags []string | |
| @@ -303,6 +303,17 @@ func (s *ManifestStorage) deleteManifestContentType(name, reference string) erro | |||||
| 303 | 303 | ||||
| 304 | // Tags management helpers | 304 | // Tags management helpers | ||
| 305 | 305 | ||||
| 306 | + | // filterOutDigests removes digest entries from a tag list. | |||
| 307 | + | func filterOutDigests(tags []string) []string { | |||
| 308 | + | filtered := make([]string, 0, len(tags)) | |||
| 309 | + | for _, tag := range tags { | |||
| 310 | + | if !validation.IsDigest(tag) { | |||
| 311 | + | filtered = append(filtered, tag) | |||
| 312 | + | } | |||
| 313 | + | } | |||
| 314 | + | return filtered | |||
| 315 | + | } | |||
| 316 | + | ||||
| 306 | func (s *ManifestStorage) updateTagsList(name, reference string) error { | 317 | func (s *ManifestStorage) updateTagsList(name, reference string) error { | ||
| 307 | if validation.IsDigest(reference) { | 318 | if validation.IsDigest(reference) { | ||
| 308 | return nil | 319 | return nil | ||
| @@ -313,14 +324,7 @@ func (s *ManifestStorage) updateTagsList(name, reference string) error { | |||||
| 313 | return err | 324 | return err | ||
| 314 | } | 325 | } | ||
| 315 | 326 | ||||
| 316 | - | // Drop any legacy digest entries before persisting | 327 | + | tags = filterOutDigests(tags) |
| 317 | - | filtered := make([]string, 0, len(tags)) | |||
| 318 | - | for _, tag := range tags { | |||
| 319 | - | if !validation.IsDigest(tag) { | |||
| 320 | - | filtered = append(filtered, tag) | |||
| 321 | - | } | |||
| 322 | - | } | |||
| 323 | - | tags = filtered | |||
| 324 | 328 | ||||
| 325 | // Add tag if not already present | 329 | // Add tag if not already present | ||
| 326 | for _, tag := range tags { | 330 | for _, tag := range tags { | ||
| @@ -339,14 +343,7 @@ func (s *ManifestStorage) removeFromTagsList(name, reference string) error { | |||||
| 339 | return err | 343 | return err | ||
| 340 | } | 344 | } | ||
| 341 | 345 | ||||
| 342 | - | // Drop any legacy digest entries before persisting | 346 | + | tags = filterOutDigests(tags) |
| 343 | - | filtered := make([]string, 0, len(tags)) | |||
| 344 | - | for _, tag := range tags { | |||
| 345 | - | if !validation.IsDigest(tag) { | |||
| 346 | - | filtered = append(filtered, tag) | |||
| 347 | - | } | |||
| 348 | - | } | |||
| 349 | - | tags = filtered | |||
| 350 | 347 | ||||
| 351 | // Remove tag if present | 348 | // Remove tag if present | ||
| 352 | var newTags []string | 349 | var newTags []string | ||