rclone/cmd/config/config.go
thierry 0575623dff Add config listproviders, listoptions, jsonconfig for automated config
Addition of a method listing the providers, a method listing the
options of a provider and method of manual configuration.
2017-10-13 17:17:36 +01:00

66 lines
2.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package config
import (
"fmt"
"os"
"github.com/ncw/rclone/cmd"
"github.com/ncw/rclone/fs"
"github.com/spf13/cobra"
)
func init() {
cmd.Root.AddCommand(commandDefintion)
}
var commandDefintion = &cobra.Command{
Use: "config [function]",
Short: `Enter an interactive configuration session.`,
Long: "`rclone config`" + `
enters an interactive configuration sessions where you can setup
new remotes and manage existing ones. You may also set or remove a password to
protect your configuration.
Additional functions:
* ` + "`rclone config edit`" + ` same as above
* ` + "`rclone config file`" + ` show path of configuration file in use
* ` + "`rclone config show`" + ` print (decrypted) config file
* ` + "`rclone config listproviders`" + ` List, in json format, the protocols supported by sync
* ` + "`rclone config listoptions type`" + ` Lists all the options needed to connect to a protocol
* ` + "`rclone config jsonconfig`name type jsonoptions" + ` Created a new remote type X with parameters Y
`,
Run: func(command *cobra.Command, args []string) {
cmd.CheckArgs(0, 4, command, args)
if len(args) == 0 {
fs.EditConfig()
} else if (len(args) == 1) {
switch args[0] {
case "edit":
fs.EditConfig()
case "show":
fs.ShowConfig()
case "file":
fs.ShowConfigLocation()
case "listproviders":
fs.ListProviders()
default:
fmt.Fprintf(os.Stderr, "Unknown subcommand %q, %s only supports edit, show and file.\n", args[0], command.Name())
}
} else if (len(args) == 2) {
if ((args[0] == "listoptions") && (args[1] != "")) {
fs.ListOptions(args[1])
} else {
fmt.Fprintf(os.Stderr, "Unknown subcommand %q %q, %s only supports optionsprovider <type>.\n", args[0], args[1], command.Name())
}
} else if (len(args) == 4) {
if ((args[0] == "jsonconfig") && (args[1] != "") && (args[2] != "") && (args[3]!= "")) {
fs.JsonConfig(args[1], args[2], args[3])
} else {
fmt.Fprintf(os.Stderr, "Unknown subcommand %q %q %q %q, %s only supports jsonconfig <name> <type> <json:options>.\n", args[0], args[1], args[2], args[3], command.Name())
}
}
return
},
}