tagOrDigest returns a tag or digest from the reference.
()
| 196 | |
| 197 | // tagOrDigest returns a tag or digest from the reference. |
| 198 | func (ref dockerReference) tagOrDigest() (string, error) { |
| 199 | if ref, ok := ref.ref.(reference.Canonical); ok { |
| 200 | return ref.Digest().String(), nil |
| 201 | } |
| 202 | if ref, ok := ref.ref.(reference.NamedTagged); ok { |
| 203 | return ref.Tag(), nil |
| 204 | } |
| 205 | |
| 206 | if ref.isUnknownDigest { |
| 207 | return "", fmt.Errorf("Docker reference %q is for an unknown digest case, has neither a digest nor a tag", reference.FamiliarString(ref.ref)) |
| 208 | } |
| 209 | // This should not happen, NewReference above refuses reference.IsNameOnly values. |
| 210 | return "", fmt.Errorf("Internal inconsistency: Reference %s unexpectedly has neither a digest nor a tag", reference.FamiliarString(ref.ref)) |
| 211 | } |