config: add config/setpath for setting config path via rc/librclone

This commit is contained in:
Nick Craig-Wood 2022-12-02 13:44:08 +00:00
parent 7edb4c0162
commit 67fc227684
3 changed files with 45 additions and 0 deletions

View file

@ -217,3 +217,27 @@ func rcDelete(ctx context.Context, in rc.Params) (out rc.Params, err error) {
DeleteRemote(name) DeleteRemote(name)
return nil, nil return nil, nil
} }
func init() {
rc.Add(rc.Call{
Path: "config/setpath",
Fn: rcSetPath,
Title: "Set the path of the config file",
AuthRequired: true,
Help: `
Parameters:
- path - path to the config file to use
`,
})
}
// Set the config file path
func rcSetPath(ctx context.Context, in rc.Params) (out rc.Params, err error) {
path, err := in.GetString("path")
if err != nil {
return nil, err
}
err = SetConfigPath(path)
return nil, err
}

View file

@ -153,3 +153,21 @@ func TestRcProviders(t *testing.T) {
} }
assert.True(t, foundLocal, "didn't find local provider") assert.True(t, foundLocal, "didn't find local provider")
} }
func TestRcSetPath(t *testing.T) {
oldPath := config.GetConfigPath()
newPath := oldPath + ".newPath"
call := rc.Calls.Get("config/setpath")
assert.NotNil(t, call)
in := rc.Params{
"path": newPath,
}
_, err := call.Fn(context.Background(), in)
require.NoError(t, err)
assert.Equal(t, newPath, config.GetConfigPath())
in["path"] = oldPath
_, err = call.Fn(context.Background(), in)
require.NoError(t, err)
assert.Equal(t, oldPath, config.GetConfigPath())
}

View file

@ -113,6 +113,9 @@ int main(int argc, char** argv) {
/* testCopyFile(); */ /* testCopyFile(); */
/* testListRemotes(); */ /* testListRemotes(); */
/* testRPC("config/setpath", "{\"path\":\"/tmp/rclone.conf\"}"); */
/* testRPC("config/listremotes", "{}"); */
RcloneFinalize(); RcloneFinalize();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }