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 listCmd := &cobra.Command{
11 Use: "list",
12 Aliases: []string{"ls"},
13 Short: "List repositories.",
14 Args: cobra.NoArgs,
15 RunE: func(cmd *cobra.Command, args []string) error {
16 cfg, s := fromContext(cmd)
17 repos, err := cfg.Backend.Repositories()
18 if err != nil {
19 return err
20 }
21 for _, r := range repos {
22 if cfg.Backend.AccessLevel(r.Name(), s.PublicKey()) >= backend.ReadOnlyAccess {
23 cmd.Println(r.Name())
24 }
25 }
26 return nil
27 },
28 }
29 return listCmd
30}