Files
containerd/cmd/dist/delete.go
Derek McGowan 6c498c61eb Clean up dist tool to use containerd client
Remove direct use of grpc in dist tool

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-06-21 11:26:02 -07:00

61 lines
1.3 KiB
Go

package main
import (
"fmt"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/log"
digest "github.com/opencontainers/go-digest"
"github.com/urfave/cli"
)
var deleteCommand = cli.Command{
Name: "delete",
Aliases: []string{"del", "remove", "rm"},
Usage: "permanently delete one or more blobs.",
ArgsUsage: "[flags] [<digest>, ...]",
Description: `Delete one or more blobs permanently. Successfully deleted
blobs are printed to stdout.`,
Flags: []cli.Flag{},
Action: func(context *cli.Context) error {
var (
args = []string(context.Args())
exitError error
)
ctx, cancel := appContext(context)
defer cancel()
client, err := getClient(context)
if err != nil {
return err
}
cs := client.ContentStore()
for _, arg := range args {
dgst, err := digest.Parse(arg)
if err != nil {
if exitError == nil {
exitError = err
}
log.G(ctx).WithError(err).Errorf("could not delete %v", dgst)
continue
}
if err := cs.Delete(ctx, dgst); err != nil {
if !content.IsNotFound(err) {
if exitError == nil {
exitError = err
}
log.G(ctx).WithError(err).Errorf("could not delete %v", dgst)
}
continue
}
fmt.Println(dgst)
}
return exitError
},
}