func headOrGet()

in container_images/registry-image-forked/commands/check.go [328:355]


func headOrGet(ref name.Reference, imageOpts ...remote.Option) (v1.Hash, bool, error) {
	v1Desc, err := remote.Head(ref, imageOpts...)
	if err != nil {
		if checkMissingManifest(err) {
			return v1.Hash{}, false, nil
		}

		remoteDesc, err := remote.Get(ref, imageOpts...)
		if err != nil {
			if checkMissingManifest(err) {
				return v1.Hash{}, false, nil
			}
			if (remoteDesc.Digest == v1.Hash{}) {
				return v1.Hash{}, false, nil
			}

			return v1.Hash{}, false, err
		}

		return remoteDesc.Digest, true, nil
	}

	if (v1Desc.Digest == v1.Hash{}) {
		return v1.Hash{}, false, nil
	}

	return v1Desc.Digest, true, nil
}