description.go

 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}