rclone/cmd/listremotes/listremotes.go

62 lines
1.5 KiB
Go
Raw Normal View History

// Package ls provides the ls command.
2016-10-08 21:24:37 +08:00
package ls
import (
"fmt"
"sort"
"github.com/rclone/rclone/cmd"
"github.com/rclone/rclone/fs/config"
"github.com/rclone/rclone/fs/config/flags"
2016-10-08 21:24:37 +08:00
"github.com/spf13/cobra"
)
// Globals
var (
listLong bool
)
func init() {
2019-10-11 23:58:11 +08:00
cmd.Root.AddCommand(commandDefinition)
cmdFlags := commandDefinition.Flags()
flags.BoolVarP(cmdFlags, &listLong, "long", "", listLong, "Show the type and the description as well as names", "")
2016-10-08 21:24:37 +08:00
}
2019-10-11 23:58:11 +08:00
var commandDefinition = &cobra.Command{
2016-10-08 21:24:37 +08:00
Use: "listremotes",
Short: `List all the remotes in the config file and defined in environment variables.`,
2016-10-08 21:24:37 +08:00
Long: `
rclone listremotes lists all the available remotes from the config file.
When used with the ` + "`--long`" + ` flag it lists the types and the descriptions too.
2016-10-08 21:24:37 +08:00
`,
Annotations: map[string]string{
"versionIntroduced": "v1.34",
},
2016-10-08 21:24:37 +08:00
Run: func(command *cobra.Command, args []string) {
cmd.CheckArgs(0, 0, command, args)
remotes := config.FileSections()
2016-10-08 21:24:37 +08:00
sort.Strings(remotes)
maxlen := 1
maxlentype := 1
2016-10-08 21:24:37 +08:00
for _, remote := range remotes {
if len(remote) > maxlen {
maxlen = len(remote)
}
t := config.FileGet(remote, "type")
if len(t) > maxlentype {
maxlentype = len(t)
}
2016-10-08 21:24:37 +08:00
}
for _, remote := range remotes {
if listLong {
remoteType := config.FileGet(remote, "type")
description := config.FileGet(remote, "description")
fmt.Printf("%-*s %-*s %s\n", maxlen+1, remote+":", maxlentype+1, remoteType, description)
2016-10-08 21:24:37 +08:00
} else {
fmt.Printf("%s:\n", remote)
}
}
},
}