in container_images/registry-image-forked/commands/check.go [295:326]
func checkTag(tag name.Tag, source resource.Source, version *resource.Version, opts ...remote.Option) (resource.CheckResponse, error) {
digest, found, err := headOrGet(tag, opts...)
if err != nil {
return resource.CheckResponse{}, fmt.Errorf("get remote image: %w", err)
}
response := resource.CheckResponse{}
if version != nil && found && version.Digest != digest.String() {
digestRef := tag.Repository.Digest(version.Digest)
_, found, err := headOrGet(digestRef, opts...)
if err != nil {
return resource.CheckResponse{}, fmt.Errorf("get remote image: %w", err)
}
if found {
response = append(response, resource.Version{
Tag: tag.TagStr(),
Digest: version.Digest,
})
}
}
if found {
response = append(response, resource.Version{
Tag: tag.TagStr(),
Digest: digest.String(),
})
}
return response, nil
}