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}