...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package crane
16
17 import "github.com/google/go-containerregistry/pkg/logs"
18
19
20 func Digest(ref string, opt ...Option) (string, error) {
21 o := makeOptions(opt...)
22 if o.Platform != nil {
23 desc, err := getManifest(ref, opt...)
24 if err != nil {
25 return "", err
26 }
27 if !desc.MediaType.IsIndex() {
28 return desc.Digest.String(), nil
29 }
30
31
32 img, err := desc.Image()
33 if err != nil {
34 return "", err
35 }
36 digest, err := img.Digest()
37 if err != nil {
38 return "", err
39 }
40 return digest.String(), nil
41 }
42 desc, err := Head(ref, opt...)
43 if err != nil {
44 logs.Warn.Printf("HEAD request failed, falling back on GET: %v", err)
45 rdesc, err := getManifest(ref, opt...)
46 if err != nil {
47 return "", err
48 }
49 return rdesc.Digest.String(), nil
50 }
51 return desc.Digest.String(), nil
52 }
53
View as plain text