From b23b307e088efd41d4018fa7295f702bcda0f026 Mon Sep 17 00:00:00 2001 From: "byunghwa.yun" Date: Tue, 20 Jul 2021 08:49:28 +0900 Subject: [PATCH] Add fs rm --- weed/shell/command_fs_rm.go | 67 +++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 weed/shell/command_fs_rm.go diff --git a/weed/shell/command_fs_rm.go b/weed/shell/command_fs_rm.go new file mode 100644 index 000000000..4ee96ecf0 --- /dev/null +++ b/weed/shell/command_fs_rm.go @@ -0,0 +1,67 @@ +package shell + +import ( + "context" + "fmt" + "io" + + "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" + "github.com/chrislusf/seaweedfs/weed/util" +) + +func init() { + Commands = append(Commands, &commandFsRm{}) +} + +type commandFsRm struct { +} + +func (c *commandFsRm) Name() string { + return "fs.rm" +} + +func (c *commandFsRm) Help() string { + return `remove a file or a folder, recursively delete all files and folders + + fs.rm + + fs.rm /dir/file_name + fs.rm /dir +` +} + +func (c *commandFsRm) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) { + + if len(args) != 1 { + return fmt.Errorf("need to have arguments") + } + + targetPath, err := commandEnv.parseUrl(args[0]) + if err != nil { + return err + } + + targetDir, targetName := util.FullPath(targetPath).DirAndName() + + return commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error { + + request := &filer_pb.DeleteEntryRequest{ + Directory: targetDir, + Name: targetName, + IgnoreRecursiveError: true, + IsDeleteData: true, + IsRecursive: true, + IsFromOtherCluster: false, + Signatures: nil, + } + _, err = client.DeleteEntry(context.Background(), request) + + if err == nil { + fmt.Fprintf(writer, "remove: %s\n", targetPath) + } + + return err + + }) + +}