github.com/containers/podman/v4@v4.9.4/pkg/bindings/images/rm.go (about)

     1  package images
     2  
     3  import (
     4  	"context"
     5  	"net/http"
     6  
     7  	"github.com/containers/podman/v4/pkg/api/handlers/types"
     8  	"github.com/containers/podman/v4/pkg/bindings"
     9  	"github.com/containers/podman/v4/pkg/domain/entities"
    10  	"github.com/containers/podman/v4/pkg/errorhandling"
    11  )
    12  
    13  // Remove removes one or more images from the local storage.  Use optional force option to remove an
    14  // image, even if it's used by containers.
    15  func Remove(ctx context.Context, images []string, options *RemoveOptions) (*entities.ImageRemoveReport, []error) {
    16  	if options == nil {
    17  		options = new(RemoveOptions)
    18  	}
    19  	var report types.LibpodImagesRemoveReport
    20  	conn, err := bindings.GetClient(ctx)
    21  	if err != nil {
    22  		return nil, []error{err}
    23  	}
    24  
    25  	params, err := options.ToParams()
    26  	if err != nil {
    27  		return nil, nil
    28  	}
    29  	for _, image := range images {
    30  		params.Add("images", image)
    31  	}
    32  	response, err := conn.DoRequest(ctx, nil, http.MethodDelete, "/images/remove", params, nil)
    33  	if err != nil {
    34  		return nil, []error{err}
    35  	}
    36  	defer response.Body.Close()
    37  
    38  	if err := response.Process(&report); err != nil {
    39  		return nil, []error{err}
    40  	}
    41  
    42  	return &report.ImageRemoveReport, errorhandling.StringsToErrors(report.Errors)
    43  }