@@ -5,33 +5,35 @@ import (
55 "strings"
66
77 "github.com/containers/image/v5/pkg/shortnames"
8- "github.com/containers/image/v5/pkg/sysregistriesv2"
98 "github.com/containers/storage"
109)
1110
12- // We get fully qualified name
11+ // We get fully qualified name with more robust Resolve()
1312func CanonicalImageName (ref string ) (string , error ) {
1413 parts := strings .Split (ref , ":" )
1514 name := parts [0 ]
1615
17- // if there is no tag, we default it to latest
16+ // default to " latest"
1817 tag := "latest"
1918 if len (parts ) == 2 && parts [1 ] != "" {
2019 tag = parts [1 ]
2120 }
2221
2322 if shortnames .IsShortName (ref ) {
24- alias , _ , err := sysregistriesv2 . ResolveShortNameAlias (nil , name )
23+ resolved , err := shortnames . Resolve (nil , ref )
2524 if err != nil {
26- return "" , err
25+ return "" , fmt . Errorf ( "failed to resolve short name %q: %w" , ref , err )
2726 }
28- name = alias .Name ()
27+ if len (resolved .PullCandidates ) == 0 {
28+ return "" , fmt .Errorf ("no resolution candidates found for short name %q" , ref )
29+ }
30+ candidate := resolved .PullCandidates [0 ] // take first candidate
31+ return candidate .Value .String (), nil // Already includes tag
2932 }
3033
3134 return fmt .Sprintf ("%s:%s" , name , tag ), nil
3235}
3336
34-
3537func FindImage (store storage.Store , name string ) (storage.Image , error ){
3638 canonical , err := CanonicalImageName (name )
3739 if err != nil {
0 commit comments