mirror.go
891 bytes
1package cmd
2
3import (
4 "github.com/charmbracelet/soft-serve/pkg/backend"
5 "github.com/spf13/cobra"
6)
7
8func mirrorCommand() *cobra.Command {
9 cmd := &cobra.Command{
10 Use: "mirror REPOSITORY [true|false]",
11 Short: "Set or get a repository mirror property",
12 Args: cobra.RangeArgs(1, 2),
13 PersistentPreRunE: checkIfReadable,
14 RunE: func(cmd *cobra.Command, args []string) error {
15 ctx := cmd.Context()
16 be := backend.FromContext(ctx)
17 rn := args[0]
18
19 switch len(args) {
20 case 1:
21 isMirror, err := be.IsMirror(ctx, rn)
22 if err != nil {
23 return err
24 }
25
26 cmd.Println(isMirror)
27 case 2:
28 if err := checkIfRepoCollab(cmd, args); err != nil {
29 return err
30 }
31
32 isMirror := args[1] == "true"
33 if err := be.SetMirror(ctx, rn, isMirror); err != nil {
34 return err
35 }
36 }
37
38 return nil
39 },
40 }
41
42 return cmd
43}