ParseReference converts a string, which should not start with the ImageTransport.Name prefix, into an Docker ImageReference.
(refString string)
| 54 | |
| 55 | // ParseReference converts a string, which should not start with the ImageTransport.Name prefix, into an Docker ImageReference. |
| 56 | func ParseReference(refString string) (types.ImageReference, error) { |
| 57 | refString, ok := strings.CutPrefix(refString, "//") |
| 58 | if !ok { |
| 59 | return nil, fmt.Errorf("docker: image reference %s does not start with //", refString) |
| 60 | } |
| 61 | refString, unknownDigest := strings.CutSuffix(refString, UnknownDigestSuffix) |
| 62 | ref, err := reference.ParseNormalizedNamed(refString) |
| 63 | if err != nil { |
| 64 | return nil, err |
| 65 | } |
| 66 | |
| 67 | if unknownDigest { |
| 68 | if !reference.IsNameOnly(ref) { |
| 69 | return nil, fmt.Errorf("docker: image reference %q has unknown digest set but it contains either a tag or digest", ref.String()+UnknownDigestSuffix) |
| 70 | } |
| 71 | return NewReferenceUnknownDigest(ref) |
| 72 | } |
| 73 | |
| 74 | ref = reference.TagNameOnly(ref) |
| 75 | return NewReference(ref) |
| 76 | } |
| 77 | |
| 78 | // NewReference returns a Docker reference for a named reference. The reference must satisfy !reference.IsNameOnly(). |
| 79 | func NewReference(ref reference.Named) (types.ImageReference, error) { |
searching dependent graphs…