From 2e795f7393954805399dd6a5ed730af51b2a1bb9 Mon Sep 17 00:00:00 2001 From: Brandon Mitchell Date: Mon, 12 Feb 2024 19:15:16 -0500 Subject: [PATCH] Adding a regclient example Signed-off-by: Brandon Mitchell --- example_test.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 example_test.go diff --git a/example_test.go b/example_test.go new file mode 100644 index 0000000..1533dff --- /dev/null +++ b/example_test.go @@ -0,0 +1,48 @@ +package regclient_test + +import ( + "context" + "fmt" + + "github.com/regclient/regclient" + "github.com/regclient/regclient/config" + "github.com/regclient/regclient/types/ref" +) + +func ExampleNew() { + ctx := context.Background() + // use config.Host to provide registry logins, TLS, and other registry settings + exHostLocal := config.Host{ + Name: "registry.example.org:5000", + TLS: config.TLSDisabled, + User: "exUser", + Pass: "exPass", + } + exHostDH := config.Host{ + Name: "docker.io", + User: "dhUser", + Pass: "dhPass", + } + // define a regclient with desired options + rc := regclient.New( + regclient.WithConfigHosts([]config.Host{exHostLocal, exHostDH}), + regclient.WithDockerCerts(), + regclient.WithDockerCreds(), + regclient.WithUserAgent("regclient/example"), + ) + // create a reference for an image + r, err := ref.New("ghcr.io/regclient/regctl:latest") + if err != nil { + fmt.Printf("failed to create ref: %v\n", err) + return + } + defer rc.Close(ctx, r) + // get a manifest (or call other regclient methods) + m, err := rc.ManifestGet(ctx, r) + if err != nil { + fmt.Printf("failed to get manifest: %v\n", err) + return + } + fmt.Println(m.GetDescriptor().MediaType) + // Output: application/vnd.oci.image.index.v1+json +}