47 lines
1 KiB
Go
47 lines
1 KiB
Go
|
package ls2
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/ncw/rclone/cmd"
|
||
|
"github.com/ncw/rclone/fs"
|
||
|
"github.com/spf13/cobra"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
recurse bool
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
cmd.Root.AddCommand(commandDefintion)
|
||
|
commandDefintion.Flags().BoolVarP(&recurse, "recursive", "R", false, "Recurse into the listing.")
|
||
|
}
|
||
|
|
||
|
var commandDefintion = &cobra.Command{
|
||
|
Use: "ls2 remote:path",
|
||
|
Short: `List directories and objects in the path.`,
|
||
|
Hidden: true,
|
||
|
Run: func(command *cobra.Command, args []string) {
|
||
|
cmd.CheckArgs(1, 1, command, args)
|
||
|
fsrc := cmd.NewFsSrc(args)
|
||
|
cmd.Run(false, false, command, func() error {
|
||
|
return fs.Walk(fsrc, "", false, fs.ConfigMaxDepth(recurse), func(path string, entries fs.DirEntries, err error) error {
|
||
|
if err != nil {
|
||
|
fs.Stats.Error()
|
||
|
fs.Errorf(path, "error listing: %v", err)
|
||
|
return nil
|
||
|
}
|
||
|
for _, entry := range entries {
|
||
|
_, isDir := entry.(*fs.Dir)
|
||
|
if isDir {
|
||
|
fmt.Println(entry.Remote() + "/")
|
||
|
} else {
|
||
|
fmt.Println(entry.Remote())
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
}
|