...
1
2
3 package name
4
5 import (
6 "fmt"
7
8 "github.com/google/go-containerregistry/pkg/name"
9 v1 "github.com/google/go-containerregistry/pkg/v1"
10
11 wh "edge-infra.dev/pkg/f8n/warehouse"
12 "edge-infra.dev/pkg/f8n/warehouse/lift"
13 "edge-infra.dev/pkg/f8n/warehouse/oci"
14 )
15
16
17 type Reference = name.Reference
18
19
20
21
22 func FromImage(img v1.Image) (string, error) {
23 return FromArtifact(img)
24 }
25
26
27 func FromArtifact(a oci.Artifact) (string, error) {
28 annos, err := oci.Annotations(a)
29 switch {
30 case err != nil:
31 return "", err
32 case annos[wh.AnnotationName] == "":
33 return "", fmt.Errorf("%w", oci.ErrInvalidArtifact)
34 default:
35 return annos[wh.AnnotationName], nil
36 }
37 }
38
39
40
41
42 func Tag(t string, opts ...name.Option) (name.Tag, error) {
43 return name.NewTag(t,
44 append([]name.Option{
45 name.WeakValidation,
46 name.WithDefaultRegistry(lift.LocalRegistryAlias),
47 name.WithDefaultTag("latest"),
48 }, opts...,
49 )...,
50 )
51 }
52
53
54
55
56 func Digest(d string, opts ...name.Option) (name.Digest, error) {
57 return name.NewDigest(d,
58 append([]name.Option{
59 name.WeakValidation,
60 name.WithDefaultRegistry(lift.LocalRegistryAlias),
61 }, opts...,
62 )...,
63 )
64 }
65
66
67
68 func TruncatedDigest(d string) string {
69 return d[7:20]
70 }
71
View as plain text