config: add password sub command for setting obscured passwords

This commit is contained in:
Substantiel 2017-11-15 15:44:45 +01:00 committed by Nick Craig-Wood
parent 4355f3fe97
commit 2423fa40e2
2 changed files with 36 additions and 0 deletions

View File

@ -16,6 +16,7 @@ func init() {
configCommand.AddCommand(configCreateCommand)
configCommand.AddCommand(configUpdateCommand)
configCommand.AddCommand(configDeleteCommand)
configCommand.AddCommand(configPasswordCommand)
}
var configCommand = &cobra.Command{
@ -121,3 +122,20 @@ var configDeleteCommand = &cobra.Command{
fs.DeleteRemote(args[0])
},
}
var configPasswordCommand = &cobra.Command{
Use: "password <name> [<key> <value>]+",
Short: `Update password in an existing remote.`,
Long: `
Update an existing remote's password. The password
should be passed in in pairs of <key> <value>.
For example to set password of a remote of name myremote you would do:
rclone config password myremote fieldname mypassword
`,
RunE: func(command *cobra.Command, args []string) error {
cmd.CheckArgs(3, 256, command, args)
return fs.PasswordRemote(args[0], args[1:])
},
}

View File

@ -1034,6 +1034,24 @@ func CreateRemote(name string, provider string, keyValues []string) error {
return UpdateRemote(name, keyValues)
}
// PasswordRemote adds the keyValues passed in to the remote of name.
// keyValues should be key, value pairs.
func PasswordRemote(name string, keyValues []string) error {
if len(keyValues) != 2 {
return errors.New("found key without value")
}
// Suppress Confirm
Config.AutoConfirm = true
passwd := MustObscure(keyValues[1])
if passwd != "" {
configData.SetValue(name, keyValues[0], passwd)
RemoteConfig(name)
ShowRemote(name)
SaveConfig()
}
return nil
}
// JSONListProviders prints all the providers and options in JSON format
func JSONListProviders() error {
b, err := json.MarshalIndent(fsRegistry, "", " ")