github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/fs/sync/rc.go (about) 1 package sync 2 3 import ( 4 "context" 5 6 "github.com/rclone/rclone/fs/rc" 7 ) 8 9 func init() { 10 for _, name := range []string{"sync", "copy", "move"} { 11 name := name 12 moveHelp := "" 13 if name == "move" { 14 moveHelp = "- deleteEmptySrcDirs - delete empty src directories if set\n" 15 } 16 rc.Add(rc.Call{ 17 Path: "sync/" + name, 18 AuthRequired: true, 19 Fn: func(ctx context.Context, in rc.Params) (rc.Params, error) { 20 return rcSyncCopyMove(ctx, in, name) 21 }, 22 Title: name + " a directory from source remote to destination remote", 23 Help: `This takes the following parameters 24 25 - srcFs - a remote name string eg "drive:src" for the source 26 - dstFs - a remote name string eg "drive:dst" for the destination 27 ` + moveHelp + ` 28 29 See the [` + name + ` command](/commands/rclone_` + name + `/) command for more information on the above.`, 30 }) 31 } 32 } 33 34 // Sync/Copy/Move a file 35 func rcSyncCopyMove(ctx context.Context, in rc.Params, name string) (out rc.Params, err error) { 36 srcFs, err := rc.GetFsNamed(in, "srcFs") 37 if err != nil { 38 return nil, err 39 } 40 dstFs, err := rc.GetFsNamed(in, "dstFs") 41 if err != nil { 42 return nil, err 43 } 44 createEmptySrcDirs, err := in.GetBool("createEmptySrcDirs") 45 if rc.NotErrParamNotFound(err) { 46 return nil, err 47 } 48 switch name { 49 case "sync": 50 return nil, Sync(ctx, dstFs, srcFs, createEmptySrcDirs) 51 case "copy": 52 return nil, CopyDir(ctx, dstFs, srcFs, createEmptySrcDirs) 53 case "move": 54 deleteEmptySrcDirs, err := in.GetBool("deleteEmptySrcDirs") 55 if rc.NotErrParamNotFound(err) { 56 return nil, err 57 } 58 return nil, MoveDir(ctx, dstFs, srcFs, deleteEmptySrcDirs, createEmptySrcDirs) 59 } 60 panic("unknown rcSyncCopyMove type") 61 }