From 44ff766f98ed5f2e958464a475dec0c6c8ae613f Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Wed, 8 Jul 2020 11:56:09 +0100 Subject: [PATCH] mkdir: warn when using mkdir on remotes which can't have empty directories It is a source of confusion for users that `rclone mkdir` on a remote which can't have empty directories such as s3/b2 does nothing. This emits a warning at NOTICE level if the user tries to mkdir a directory not at the root for a remote which can't have empty directories. See: https://forum.rclone.org/t/mkdir-on-b2-consider-adding-some-output/17689 --- cmd/mkdir/mkdir.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmd/mkdir/mkdir.go b/cmd/mkdir/mkdir.go index e773dc37a..33fa33667 100644 --- a/cmd/mkdir/mkdir.go +++ b/cmd/mkdir/mkdir.go @@ -2,8 +2,10 @@ package mkdir import ( "context" + "strings" "github.com/rclone/rclone/cmd" + "github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs/operations" "github.com/spf13/cobra" ) @@ -18,6 +20,9 @@ var commandDefinition = &cobra.Command{ Run: func(command *cobra.Command, args []string) { cmd.CheckArgs(1, 1, command, args) fdst := cmd.NewFsDir(args) + if !fdst.Features().CanHaveEmptyDirectories && strings.Contains(fdst.Root(), "/") { + fs.Logf(fdst, "Warning: running mkdir on a remote which can't have empty directories does nothing") + } cmd.Run(true, false, command, func() error { return operations.Mkdir(context.Background(), fdst, "") })