1package cmd
 2
 3import (
 4	"github.com/charmbracelet/soft-serve/server/backend"
 5	"github.com/spf13/cobra"
 6)
 7
 8// listCommand returns a command that list file or directory at path.
 9func listCommand() *cobra.Command {
10	var all bool
11
12	listCmd := &cobra.Command{
13		Use:     "list",
14		Aliases: []string{"ls"},
15		Short:   "List repositories",
16		Args:    cobra.NoArgs,
17		RunE: func(cmd *cobra.Command, args []string) error {
18			cfg, s := fromContext(cmd)
19			repos, err := cfg.Backend.Repositories()
20			if err != nil {
21				return err
22			}
23			for _, r := range repos {
24				if cfg.Backend.AccessLevelByPublicKey(r.Name(), s.PublicKey()) >= backend.ReadOnlyAccess {
25					if !r.IsHidden() || all {
26						cmd.Println(r.Name())
27					}
28				}
29			}
30			return nil
31		},
32	}
33
34	listCmd.Flags().BoolVarP(&all, "all", "a", false, "List all repositories")
35
36	return listCmd
37}