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
			})
		})
	},
}