config create: add --state and --result parameters #3455

This commit is contained in:
Nick Craig-Wood 2021-05-11 13:36:34 +01:00
parent 296ceadda6
commit 635d1e10ae
3 changed files with 13 additions and 14 deletions

View File

@ -159,12 +159,12 @@ This will look something like (some irrelevant detail removed):
The format of |Option| is the same as returned by |rclone config The format of |Option| is the same as returned by |rclone config
providers|. The question should be asked to the user and returned to providers|. The question should be asked to the user and returned to
rclone as a string parameter along with the state parameter. rclone as the |--result| option along with the |--state| parameter.
If |Error| is set then it should be shown to the user at the same If |Error| is set then it should be shown to the user at the same
time as the question. time as the question.
rclone config update name --continue state "*oauth-islocal,teamdrive,," result "true" rclone config update name --continue --state "*oauth-islocal,teamdrive,," --result "true"
Note that when using |--continue| all passwords should be passed in Note that when using |--continue| all passwords should be passed in
the clear (not obscured). Any default config values should be passed the clear (not obscured). Any default config values should be passed
@ -235,6 +235,8 @@ func init() {
flags.BoolVarP(cmdFlags, &updateRemoteOpt.NonInteractive, "non-interactive", "", false, "Don't interact with user and return questions.") flags.BoolVarP(cmdFlags, &updateRemoteOpt.NonInteractive, "non-interactive", "", false, "Don't interact with user and return questions.")
flags.BoolVarP(cmdFlags, &updateRemoteOpt.Continue, "continue", "", false, "Continue the configuration process with an answer.") flags.BoolVarP(cmdFlags, &updateRemoteOpt.Continue, "continue", "", false, "Continue the configuration process with an answer.")
flags.BoolVarP(cmdFlags, &updateRemoteOpt.All, "all", "", false, "Ask the full set of config questions.") flags.BoolVarP(cmdFlags, &updateRemoteOpt.All, "all", "", false, "Ask the full set of config questions.")
flags.StringVarP(cmdFlags, &updateRemoteOpt.State, "state", "", "", "State - use with --continue.")
flags.StringVarP(cmdFlags, &updateRemoteOpt.Result, "result", "", "", "Result - use with --continue.")
} }
} }

View File

@ -421,6 +421,10 @@ type UpdateRemoteOpt struct {
Continue bool `json:"continue"` Continue bool `json:"continue"`
// If set then ask all the questions, not just the post config questions // If set then ask all the questions, not just the post config questions
All bool `json:"all"` All bool `json:"all"`
// State to restart with - used with Continue
State string `json:"state"`
// Result to return - used with Continue
Result string `json:"result"`
} }
// UpdateRemote adds the keyValues passed in to the remote of name. // UpdateRemote adds the keyValues passed in to the remote of name.
@ -490,18 +494,9 @@ func UpdateRemote(ctx context.Context, name string, keyValues rc.Params, opt Upd
err = backendConfig(ctx, name, m, ri, choices, state) err = backendConfig(ctx, name, m, ri, choices, state)
} else { } else {
// Start the config state machine // Start the config state machine
in := fs.ConfigIn{} in := fs.ConfigIn{
if opt.Continue { State: opt.State,
if state, ok := keyValues["state"]; ok { Result: opt.Result,
in.State = fmt.Sprint(state)
} else {
return nil, errors.New("UpdateRemote: need state parameter with --continue")
}
if result, ok := keyValues["result"]; ok {
in.Result = fmt.Sprint(result)
} else {
return nil, errors.New("UpdateRemote: need result parameter with --continue")
}
} }
if in.State == "" && opt.All { if in.State == "" && opt.All {
in.State = fs.ConfigAll in.State = fs.ConfigAll

View File

@ -119,6 +119,8 @@ func init() {
- nonInteractive - don't interact with a user, return questions - nonInteractive - don't interact with a user, return questions
- continue - continue the config process with an answer - continue - continue the config process with an answer
- all - ask all the config questions not just the post config ones - all - ask all the config questions not just the post config ones
- state - state to restart with - used with continue
- result - result to restart with - used with continue
` `
} }
rc.Add(rc.Call{ rc.Add(rc.Call{