1package cmd23import (4 "github.com/charmbracelet/soft-serve/pkg/access"5 "github.com/charmbracelet/soft-serve/pkg/backend"6 "github.com/charmbracelet/soft-serve/pkg/sshutils"7 "github.com/spf13/cobra"8)910// listCommand returns a command that list file or directory at path.11func listCommand() *cobra.Command {12 var all bool1314 listCmd := &cobra.Command{15 Use: "list",16 Aliases: []string{"ls"},17 Short: "List repositories",18 Args: cobra.NoArgs,19 RunE: func(cmd *cobra.Command, _ []string) error {20 ctx := cmd.Context()21 be := backend.FromContext(ctx)22 pk := sshutils.PublicKeyFromContext(ctx)23 repos, err := be.Repositories(ctx)24 if err != nil {25 return err26 }27 for _, r := range repos {28 if be.AccessLevelByPublicKey(ctx, r.Name(), pk) >= access.ReadOnlyAccess {29 if !r.IsHidden() || all {30 cmd.Println(r.Name())31 }32 }33 }34 return nil35 },36 }3738 listCmd.Flags().BoolVarP(&all, "all", "a", false, "List all repositories")3940 return listCmd41}