github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/client/build_prune.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "net/url" 8 9 "github.com/docker/docker/api/types" 10 "github.com/docker/docker/api/types/filters" 11 "github.com/pkg/errors" 12 ) 13 14 // BuildCachePrune requests the daemon to delete unused cache data 15 func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) { 16 if err := cli.NewVersionError("1.31", "build prune"); err != nil { 17 return nil, err 18 } 19 20 report := types.BuildCachePruneReport{} 21 22 query := url.Values{} 23 if opts.All { 24 query.Set("all", "1") 25 } 26 query.Set("keep-storage", fmt.Sprintf("%d", opts.KeepStorage)) 27 filters, err := filters.ToJSON(opts.Filters) 28 if err != nil { 29 return nil, errors.Wrap(err, "prune could not marshal filters option") 30 } 31 query.Set("filters", filters) 32 33 serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil) 34 defer ensureReaderClosed(serverResp) 35 36 if err != nil { 37 return nil, err 38 } 39 40 if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { 41 return nil, fmt.Errorf("Error retrieving disk usage: %v", err) 42 } 43 44 return &report, nil 45 }