1package cmd
2
3import (
4 "strings"
5
6 "github.com/charmbracelet/soft-serve/pkg/backend"
7 "github.com/spf13/cobra"
8)
9
10func descriptionCommand() *cobra.Command {
11 cmd := &cobra.Command{
12 Use: "description REPOSITORY [DESCRIPTION]",
13 Aliases: []string{"desc"},
14 Short: "Set or get the description for a repository",
15 Args: cobra.MinimumNArgs(1),
16 PersistentPreRunE: checkIfReadable,
17 RunE: func(cmd *cobra.Command, args []string) error {
18 ctx := cmd.Context()
19 be := backend.FromContext(ctx)
20 rn := strings.TrimSuffix(args[0], ".git")
21 switch len(args) {
22 case 1:
23 desc, err := be.Description(ctx, rn)
24 if err != nil {
25 return err //nolint:wrapcheck
26 }
27
28 cmd.Println(desc)
29 default:
30 if err := checkIfCollab(cmd, args); err != nil {
31 return err
32 }
33 if err := be.SetDescription(ctx, rn, strings.Join(args[1:], " ")); err != nil {
34 return err //nolint:wrapcheck
35 }
36 }
37
38 return nil
39 },
40 }
41
42 return cmd
43}