client/build_prune.go
4f0d95fa
 package client // import "github.com/docker/docker/client"
5c3d2d55
 
 import (
7d62e40f
 	"context"
5c3d2d55
 	"encoding/json"
 	"fmt"
8ff7847d
 	"net/url"
5c3d2d55
 
 	"github.com/docker/docker/api/types"
8ff7847d
 	"github.com/docker/docker/api/types/filters"
 	"github.com/pkg/errors"
5c3d2d55
 )
 
 // BuildCachePrune requests the daemon to delete unused cache data
8ff7847d
 func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) {
5c3d2d55
 	if err := cli.NewVersionError("1.31", "build prune"); err != nil {
 		return nil, err
 	}
 
 	report := types.BuildCachePruneReport{}
 
8ff7847d
 	query := url.Values{}
 	if opts.All {
 		query.Set("all", "1")
 	}
 	query.Set("keep-storage", fmt.Sprintf("%d", opts.KeepStorage))
 	filters, err := filters.ToJSON(opts.Filters)
 	if err != nil {
 		return nil, errors.Wrap(err, "prune could not marshal filters option")
 	}
 	query.Set("filters", filters)
 
 	serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil)
9c846b2f
 	defer ensureReaderClosed(serverResp)
8ff7847d
 
5c3d2d55
 	if err != nil {
 		return nil, err
 	}
 
 	if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil {
 		return nil, fmt.Errorf("Error retrieving disk usage: %v", err)
 	}
 
 	return &report, nil
 }