|
1 |
| -package oci_registry |
| 1 | +package ociregistry |
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "context" |
5 | 4 | "fmt"
|
6 |
| - "github.com/Masterminds/semver/v3" |
7 |
| - "oras.land/oras-go/v2/registry/remote/credentials" |
8 |
| - "sort" |
9 |
| - |
10 |
| - "github.com/sirupsen/logrus" |
11 |
| - "oras.land/oras-go/v2/registry" |
12 | 5 | "oras.land/oras-go/v2/registry/remote"
|
13 | 6 | "oras.land/oras-go/v2/registry/remote/auth"
|
| 7 | + "oras.land/oras-go/v2/registry/remote/credentials" |
14 | 8 | "oras.land/oras-go/v2/registry/remote/retry"
|
15 | 9 | )
|
16 | 10 |
|
17 |
| -// getLatestTagSortedBySemver returns the latest tag sorted by semver |
18 |
| -func getLatestTagSortedBySemver(refName string, disableTLS bool) (string, error) { |
19 |
| - |
20 |
| - repo, err := remote.NewRepository(refName) |
21 |
| - if err != nil { |
22 |
| - return "", fmt.Errorf("query repository: %w", err) |
23 |
| - } |
24 |
| - |
25 |
| - if disableTLS { |
26 |
| - repo.PlainHTTP = true |
27 |
| - } |
28 |
| - |
29 |
| - if err = getCredentialsFromDockerStore(repo); err != nil { |
30 |
| - return "", fmt.Errorf("credstore from docker: %w", err) |
31 |
| - } |
32 |
| - |
33 |
| - ctx := context.Background() |
34 |
| - |
35 |
| - tags, err := registry.Tags(ctx, repo) |
36 |
| - |
37 |
| - if err != nil { |
38 |
| - return "", fmt.Errorf("get tags: %w", err) |
39 |
| - } |
40 |
| - |
41 |
| - result := []*semver.Version{} |
42 |
| - for i := range tags { |
43 |
| - s, err := semver.NewVersion(tags[i]) |
44 |
| - if err != nil { |
45 |
| - logrus.Warningf("Ignoring tag %q - %q", tags[i], err) |
46 |
| - continue |
47 |
| - } |
48 |
| - |
49 |
| - result = append(result, s) |
50 |
| - } |
51 |
| - |
52 |
| - if len(result) == 0 { |
53 |
| - return "", fmt.Errorf("no valid semver tags found") |
54 |
| - } |
55 |
| - |
56 |
| - sort.Sort(semver.Collection(result)) |
57 |
| - sort.Sort(sort.Reverse(semver.Collection(result))) |
58 |
| - |
59 |
| - latestTag := result[0].Original() |
60 |
| - logrus.Debugf("latest tag identified %q", latestTag) |
61 |
| - |
62 |
| - return latestTag, nil |
63 |
| -} |
64 |
| - |
65 | 11 | // getCredentialsFromDockerStore get the credentials from the docker credential store
|
66 | 12 | func getCredentialsFromDockerStore(repository *remote.Repository) error {
|
67 | 13 |
|
|
0 commit comments