1package cmd
2
3import (
4 "strings"
5
6 "github.com/charmbracelet/soft-serve/server/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}