...
1 package reference
2
3 import (
4 "regexp"
5
6 "github.com/distribution/reference"
7 "github.com/opencontainers/go-digest"
8 "github.com/opencontainers/go-digest/digestset"
9 )
10
11
12
13
14
15
16
17 func ParseNormalizedNamed(s string) (reference.Named, error) {
18 return reference.ParseNormalizedNamed(s)
19 }
20
21
22
23
24
25 func ParseDockerRef(ref string) (reference.Named, error) {
26 return reference.ParseDockerRef(ref)
27 }
28
29
30
31
32
33 func TagNameOnly(ref reference.Named) reference.Named {
34 return reference.TagNameOnly(ref)
35 }
36
37
38
39
40
41 func ParseAnyReference(ref string) (reference.Reference, error) {
42 return reference.ParseAnyReference(ref)
43 }
44
45
46
47
48
49 var (
50
51
52
53
54
55 ShortIdentifierRegexp = regexp.MustCompile(shortIdentifier)
56
57 shortIdentifier = `([a-f0-9]{6,64})`
58
59
60
61
62 anchoredShortIdentifierRegexp = regexp.MustCompile(`^` + shortIdentifier + `$`)
63 )
64
65 type digestReference digest.Digest
66
67 func (d digestReference) String() string {
68 return digest.Digest(d).String()
69 }
70
71 func (d digestReference) Digest() digest.Digest {
72 return digest.Digest(d)
73 }
74
75
76
77
78
79 func ParseAnyReferenceWithSet(ref string, ds *digestset.Set) (Reference, error) {
80 if ok := anchoredShortIdentifierRegexp.MatchString(ref); ok {
81 dgst, err := ds.Lookup(ref)
82 if err == nil {
83 return digestReference(dgst), nil
84 }
85 } else {
86 if dgst, err := digest.Parse(ref); err == nil {
87 return digestReference(dgst), nil
88 }
89 }
90
91 return reference.ParseNormalizedNamed(ref)
92 }
93
View as plain text