func ParsePathComponents()

in pkg/oci/distribution/v2.go [30:48]


func ParsePathComponents(registry, path string) (string, digest.Digest, ReferenceType, error) {
	comps := manifestRegexTag.FindStringSubmatch(path)
	if len(comps) == 6 {
		if registry == "" {
			return "", "", "", fmt.Errorf("registry parameter needs to be set for tag references")
		}
		ref := fmt.Sprintf("%s/%s:%s", registry, comps[1], comps[5])
		return ref, "", ReferenceTypeManifest, nil
	}
	comps = manifestRegexDigest.FindStringSubmatch(path)
	if len(comps) == 6 {
		return "", digest.Digest(comps[5]), ReferenceTypeManifest, nil
	}
	comps = blobsRegexDigest.FindStringSubmatch(path)
	if len(comps) == 6 {
		return "", digest.Digest(comps[5]), ReferenceTypeBlob, nil
	}
	return "", "", "", fmt.Errorf("distribution path could not be parsed")
}