From 4efa4380c491398e0703b1532ed8442ce89d3d79 Mon Sep 17 00:00:00 2001 From: Arsen Musayelyan Date: Sat, 3 Sep 2022 16:28:25 -0700 Subject: [PATCH] Add -r for rm and -p for mkdir --- api/fs.go | 20 ++++++++++++++++++++ cmd/itctl/fs.go | 14 ++++++++++++-- cmd/itctl/main.go | 14 ++++++++++++++ socket.go | 22 ++++++++++++++++++++++ 4 files changed, 68 insertions(+), 2 deletions(-) diff --git a/api/fs.go b/api/fs.go index ae41b9e..7b05b51 100644 --- a/api/fs.go +++ b/api/fs.go @@ -2,6 +2,16 @@ package api import "context" +func (c *Client) RemoveAll(ctx context.Context, paths ...string) error { + return c.client.Call( + ctx, + "FS", + "RemoveAll", + paths, + nil, + ) +} + func (c *Client) Remove(ctx context.Context, paths ...string) error { return c.client.Call( ctx, @@ -22,6 +32,16 @@ func (c *Client) Rename(ctx context.Context, old, new string) error { ) } +func (c *Client) MkdirAll(ctx context.Context, paths ...string) error { + return c.client.Call( + ctx, + "FS", + "MkdirAll", + paths, + nil, + ) +} + func (c *Client) Mkdir(ctx context.Context, paths ...string) error { return c.client.Call( ctx, diff --git a/cmd/itctl/fs.go b/cmd/itctl/fs.go index 38ac25d..fc2ec0a 100644 --- a/cmd/itctl/fs.go +++ b/cmd/itctl/fs.go @@ -34,7 +34,12 @@ func fsMkdir(c *cli.Context) error { return cli.Exit("Command mkdir requires one or more arguments", 1) } - err := client.Mkdir(c.Context, c.Args().Slice()...) + var err error + if c.Bool("parents") { + err = client.MkdirAll(c.Context, c.Args().Slice()...) + } else { + err = client.Mkdir(c.Context, c.Args().Slice()...) + } if err != nil { return err } @@ -109,7 +114,12 @@ func fsRemove(c *cli.Context) error { return cli.Exit("Command remove requires one or more arguments", 1) } - err := client.Remove(c.Context, c.Args().Slice()...) + var err error + if c.Bool("recursive") { + err = client.RemoveAll(c.Context, c.Args().Slice()...) + } else { + err = client.Remove(c.Context, c.Args().Slice()...) + } if err != nil { return err } diff --git a/cmd/itctl/main.go b/cmd/itctl/main.go index 0de3d53..dbc8112 100644 --- a/cmd/itctl/main.go +++ b/cmd/itctl/main.go @@ -77,6 +77,13 @@ func main() { Action: fsList, }, { + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "parents", + Aliases: []string{"p"}, + Usage: "Make parent directories if needed, no error if already existing", + }, + }, Name: "mkdir", ArgsUsage: "", Usage: "Create new directories", @@ -97,6 +104,13 @@ func main() { Action: fsRead, }, { + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "recursive", + Aliases: []string{"r", "R"}, + Usage: "Remove directories and their contents recursively", + }, + }, Name: "remove", ArgsUsage: "", Aliases: []string{"rm"}, diff --git a/socket.go b/socket.go index 1e85aa6..93d9287 100644 --- a/socket.go +++ b/socket.go @@ -293,6 +293,17 @@ type FS struct { fs *blefs.FS } +func (fs *FS) RemoveAll(_ *server.Context, paths []string) error { + fs.updateFS() + for _, path := range paths { + err := fs.fs.RemoveAll(path) + if err != nil { + return err + } + } + return nil +} + func (fs *FS) Remove(_ *server.Context, paths []string) error { fs.updateFS() for _, path := range paths { @@ -309,6 +320,17 @@ func (fs *FS) Rename(_ *server.Context, paths [2]string) error { return fs.fs.Rename(paths[0], paths[1]) } +func (fs *FS) MkdirAll(_ *server.Context, paths []string) error { + fs.updateFS() + for _, path := range paths { + err := fs.fs.MkdirAll(path) + if err != nil { + return err + } + } + return nil +} + func (fs *FS) Mkdir(_ *server.Context, paths []string) error { fs.updateFS() for _, path := range paths {