hidden.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 hiddenCommand() *cobra.Command {
12	cmd := &cobra.Command{
13		Use:     "hidden REPOSITORY [TRUE|FALSE]",
14		Short:   "Hide or unhide a repository",
15		Aliases: []string{"hide"},
16		Args:    cobra.MinimumNArgs(1),
17		RunE: func(co *cobra.Command, args []string) error {
18			ctx := co.Context()
19			be := backend.FromContext(ctx)
20			repo := args[0]
21			switch len(args) {
22			case 1:
23				if !cmd.CheckUserHasAccess(co, repo, access.ReadOnlyAccess) {
24					return proto.ErrUnauthorized
25				}
26
27				hidden, err := be.IsHidden(ctx, repo)
28				if err != nil {
29					return err
30				}
31
32				co.Println(hidden)
33			case 2:
34				if !cmd.CheckUserHasAccess(co, repo, access.ReadWriteAccess) {
35					return proto.ErrUnauthorized
36				}
37
38				hidden := args[1] == "true"
39				if err := be.SetHidden(ctx, repo, hidden); err != nil {
40					return err
41				}
42			}
43
44			return nil
45		},
46	}
47
48	return cmd
49}