Skip to content

Commit bb78eb8

Browse files
committed
bisync: add missing rc params - fixes #7799
This adds 11 previously-missing rc params for newer bisync features. It also makes optional parameters truly optional. (Previously, callers were required to supply every single one, even if using the default value.)
1 parent e11a066 commit bb78eb8

1 file changed

Lines changed: 64 additions & 22 deletions

File tree

‎cmd/bisync/rc.go‎

Lines changed: 64 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,56 +41,86 @@ func rcBisync(ctx context.Context, in rc.Params) (out rc.Params, err error) {
4141
}
4242

4343
if opt.Resync, err = in.GetBool("resync"); rc.NotErrParamNotFound(err) {
44-
return
44+
fs.Debugf("resync", "optional parameter is missing. using default value: %v", opt.Resync)
4545
}
4646
if opt.CheckAccess, err = in.GetBool("checkAccess"); rc.NotErrParamNotFound(err) {
47-
return
47+
fs.Debugf("checkAccess", "optional parameter is missing. using default value: %v", opt.CheckAccess)
4848
}
4949
if opt.Force, err = in.GetBool("force"); rc.NotErrParamNotFound(err) {
50-
return
50+
fs.Debugf("force", "optional parameter is missing. using default value: %v", opt.Force)
5151
}
5252
if opt.CreateEmptySrcDirs, err = in.GetBool("createEmptySrcDirs"); rc.NotErrParamNotFound(err) {
53-
return
53+
fs.Debugf("createEmptySrcDirs", "optional parameter is missing. using default value: %v", opt.CreateEmptySrcDirs)
5454
}
5555
if opt.RemoveEmptyDirs, err = in.GetBool("removeEmptyDirs"); rc.NotErrParamNotFound(err) {
56-
return
56+
fs.Debugf("removeEmptyDirs", "optional parameter is missing. using default value: %v", opt.RemoveEmptyDirs)
5757
}
5858
if opt.NoCleanup, err = in.GetBool("noCleanup"); rc.NotErrParamNotFound(err) {
59-
return
59+
fs.Debugf("noCleanup", "optional parameter is missing. using default value: %v", opt.NoCleanup)
6060
}
6161
if opt.IgnoreListingChecksum, err = in.GetBool("ignoreListingChecksum"); rc.NotErrParamNotFound(err) {
62-
return
62+
fs.Debugf("ignoreListingChecksum", "optional parameter is missing. using default value: %v", opt.IgnoreListingChecksum)
6363
}
6464
if opt.Resilient, err = in.GetBool("resilient"); rc.NotErrParamNotFound(err) {
65-
return
65+
fs.Debugf("resilient", "optional parameter is missing. using default value: %v", opt.Resilient)
6666
}
67-
6867
if opt.CheckFilename, err = in.GetString("checkFilename"); rc.NotErrParamNotFound(err) {
69-
return
68+
opt.CheckFilename = DefaultCheckFilename
69+
fs.Debugf("checkFilename", "optional parameter is missing. using default value: %v", opt.CheckFilename)
7070
}
7171
if opt.FiltersFile, err = in.GetString("filtersFile"); rc.NotErrParamNotFound(err) {
72-
return
72+
fs.Debugf("filtersFile", "optional parameter is missing. using default value: %v", opt.FiltersFile)
7373
}
7474
if opt.Workdir, err = in.GetString("workdir"); rc.NotErrParamNotFound(err) {
75-
return
75+
// "" sets correct default later
76+
fs.Debugf("workdir", "optional parameter is missing. using default value: %v", opt.Workdir)
7677
}
77-
if opt.BackupDir1, err = in.GetString("backupdir1"); rc.NotErrParamNotFound(err) {
78-
return
78+
if opt.BackupDir1, err = in.GetString("backupDir1"); rc.NotErrParamNotFound(err) {
79+
// we accept an alternate capitalization here for backward compatibility.
80+
if opt.BackupDir1, err = in.GetString("backupdir1"); rc.NotErrParamNotFound(err) {
81+
fs.Debugf("backupDir1", "optional parameter is missing. using default value: %v", opt.BackupDir1)
82+
}
7983
}
80-
if opt.BackupDir2, err = in.GetString("backupdir2"); rc.NotErrParamNotFound(err) {
81-
return
84+
if opt.BackupDir2, err = in.GetString("backupDir2"); rc.NotErrParamNotFound(err) {
85+
// we accept an alternate capitalization here for backward compatibility.
86+
if opt.BackupDir2, err = in.GetString("backupdir2"); rc.NotErrParamNotFound(err) {
87+
fs.Debugf("backupDir2", "optional parameter is missing. using default value: %v", opt.BackupDir2)
88+
}
8289
}
83-
84-
checkSync, err := in.GetString("checkSync")
85-
if rc.NotErrParamNotFound(err) {
90+
if err = setEnum(in, "checkSync", "true", opt.CheckSync.Set); err != nil {
8691
return nil, err
8792
}
88-
if checkSync == "" {
89-
checkSync = "true"
93+
if err = setEnum(in, "resyncMode", opt.ResyncMode.String(), opt.ResyncMode.Set); err != nil {
94+
return nil, err
9095
}
91-
if err := opt.CheckSync.Set(checkSync); err != nil {
96+
if err = setEnum(in, "conflictResolve", opt.ConflictResolve.String(), opt.ConflictResolve.Set); err != nil {
9297
return nil, err
9398
}
99+
if err = setEnum(in, "conflictLoser", opt.ConflictLoser.String(), opt.ConflictLoser.Set); err != nil {
100+
return nil, err
101+
}
102+
if opt.ConflictSuffixFlag, err = in.GetString("conflictSuffix"); rc.NotErrParamNotFound(err) {
103+
fs.Debugf("conflictSuffix", "optional parameter is missing. using default value: %v", opt.ConflictSuffixFlag)
104+
}
105+
if opt.Recover, err = in.GetBool("recover"); rc.NotErrParamNotFound(err) {
106+
fs.Debugf("recover", "optional parameter is missing. using default value: %v", opt.Recover)
107+
}
108+
if opt.CompareFlag, err = in.GetString("compare"); rc.NotErrParamNotFound(err) {
109+
fs.Debugf("compare", "optional parameter is missing. using default value: %v", opt.CompareFlag)
110+
}
111+
if opt.Compare.NoSlowHash, err = in.GetBool("noSlowHash"); rc.NotErrParamNotFound(err) {
112+
fs.Debugf("noSlowHash", "optional parameter is missing. using default value: %v", opt.Compare.NoSlowHash)
113+
}
114+
if opt.Compare.SlowHashSyncOnly, err = in.GetBool("slowHashSyncOnly"); rc.NotErrParamNotFound(err) {
115+
fs.Debugf("slowHashSyncOnly", "optional parameter is missing. using default value: %v", opt.Compare.SlowHashSyncOnly)
116+
}
117+
if opt.Compare.DownloadHash, err = in.GetBool("downloadHash"); rc.NotErrParamNotFound(err) {
118+
fs.Debugf("downloadHash", "optional parameter is missing. using default value: %v", opt.Compare.DownloadHash)
119+
}
120+
if opt.MaxLock, err = in.GetFsDuration("maxLock"); rc.NotErrParamNotFound(err) {
121+
opt.MaxLock = 0
122+
fs.Debugf("maxLock", "optional parameter is missing. using default value: %v", opt.MaxLock)
123+
}
94124

95125
fs1, err := rc.GetFsNamed(octx, in, "path1")
96126
if err != nil {
@@ -108,3 +138,15 @@ func rcBisync(ctx context.Context, in rc.Params) (out rc.Params, err error) {
108138
_, _ = log.Writer().Write(output)
109139
return rc.Params{"output": string(output)}, err
110140
}
141+
142+
func setEnum(in rc.Params, name string, defaultVal string, set func(s string) error) error {
143+
v, err := in.GetString(name)
144+
if rc.NotErrParamNotFound(err) || v == "" {
145+
v = defaultVal
146+
fs.Debugf(name, "optional parameter is missing. using default value: %v", v)
147+
}
148+
if err := set(v); err != nil {
149+
return err
150+
}
151+
return nil
152+
}

0 commit comments

Comments
 (0)