private.go

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