mirror.go

 1package repo
 2
 3import (
 4	"github.com/charmbracelet/soft-serve/cmd"
 5	"github.com/charmbracelet/soft-serve/pkg/access"
 6	"github.com/charmbracelet/soft-serve/pkg/backend"
 7	"github.com/charmbracelet/soft-serve/pkg/proto"
 8	"github.com/spf13/cobra"
 9)
10
11func mirrorCommand() *cobra.Command {
12	cmd := &cobra.Command{
13		Use:   "is-mirror REPOSITORY",
14		Short: "Whether a repository is a mirror",
15		Args:  cobra.ExactArgs(1),
16		RunE: func(co *cobra.Command, args []string) error {
17			ctx := co.Context()
18			be := backend.FromContext(ctx)
19			rn := args[0]
20			rr, err := be.Repository(ctx, rn)
21			if err != nil {
22				return err
23			}
24
25			if !cmd.CheckUserHasAccess(co, rr.Name(), access.ReadOnlyAccess) {
26				return proto.ErrUnauthorized
27			}
28
29			isMirror := rr.IsMirror()
30			co.Println(isMirror)
31			return nil
32		},
33	}
34
35	return cmd
36}