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}