/* * Copyright 2026 Oleg Borodin */ package gcrcli import ( "context" "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/crane" "github.com/google/go-containerregistry/pkg/name" "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) func (cli *Client) DeleteImage(ctx context.Context, imagepath string) error { var err error imagepath, username, password, err := repackReference(imagepath) if err != nil { return err } options := make([]crane.Option, 0) options = append(options, crane.WithContext(ctx)) ref, err := name.ParseReference(imagepath) if err != nil { return err } repo := ref.Context() if err != nil { return err } if username != "" && password != "" { defaultTransport := NewRoundTripper(cli.skipTLSVerify) scopes := []string{repo.Scope(transport.PullScope)} regName := repo.RegistryStr() reg, err := name.NewRegistry(regName) if err != nil { return err } basicAuth := &authn.Basic{ Username: username, Password: password, } authTransport, err := transport.NewWithContext(ctx, reg, basicAuth, defaultTransport, scopes) if err != nil { return err } options = append(options, crane.WithTransport(authTransport)) } else { transport := NewRoundTripper(cli.skipTLSVerify) options = append(options, crane.WithTransport(transport)) } err = crane.Delete(imagepath, options...) if err != nil { return err } return err }