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