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  }