description.go

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