build_prune.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package client // import "github.com/docker/docker/client"
  2. import (
  3. "context"
  4. "encoding/json"
  5. "net/url"
  6. "strconv"
  7. "github.com/docker/docker/api/types"
  8. "github.com/docker/docker/api/types/filters"
  9. "github.com/pkg/errors"
  10. )
  11. // BuildCachePrune requests the daemon to delete unused cache data
  12. func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) {
  13. if err := cli.NewVersionError(ctx, "1.31", "build prune"); err != nil {
  14. return nil, err
  15. }
  16. report := types.BuildCachePruneReport{}
  17. query := url.Values{}
  18. if opts.All {
  19. query.Set("all", "1")
  20. }
  21. query.Set("keep-storage", strconv.Itoa(int(opts.KeepStorage)))
  22. f, err := filters.ToJSON(opts.Filters)
  23. if err != nil {
  24. return nil, errors.Wrap(err, "prune could not marshal filters option")
  25. }
  26. query.Set("filters", f)
  27. serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil)
  28. defer ensureReaderClosed(serverResp)
  29. if err != nil {
  30. return nil, err
  31. }
  32. if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil {
  33. return nil, errors.Wrap(err, "error retrieving disk usage")
  34. }
  35. return &report, nil
  36. }