1package cmd
2
3import (
4 "strconv"
5 "strings"
6
7 "github.com/charmbracelet/soft-serve/server/backend"
8 "github.com/spf13/cobra"
9)
10
11func privateCommand() *cobra.Command {
12 cmd := &cobra.Command{
13 Use: "private REPOSITORY [true|false]",
14 Short: "Set or get a repository private property",
15 Args: cobra.RangeArgs(1, 2),
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
21 switch len(args) {
22 case 1:
23 if err := checkIfReadable(cmd, args); err != nil {
24 return err
25 }
26
27 isPrivate, err := be.IsPrivate(ctx, rn)
28 if err != nil {
29 return err
30 }
31
32 cmd.Println(isPrivate)
33 case 2:
34 isPrivate, err := strconv.ParseBool(args[1])
35 if err != nil {
36 return err
37 }
38 if err := checkIfCollab(cmd, args); err != nil {
39 return err
40 }
41 if err := be.SetPrivate(ctx, rn, isPrivate); err != nil {
42 return err
43 }
44 }
45 return nil
46 },
47 }
48
49 return cmd
50}