delete.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 deleteCommand() *cobra.Command {
12	cmd := &cobra.Command{
13		Use:     "delete REPOSITORY",
14		Aliases: []string{"del", "remove", "rm"},
15		Short:   "Delete a repository",
16		Args:    cobra.ExactArgs(1),
17		RunE: func(co *cobra.Command, args []string) error {
18			ctx := co.Context()
19			be := backend.FromContext(ctx)
20			name := args[0]
21			if !cmd.CheckUserHasAccess(co, name, access.ReadWriteAccess) {
22				return proto.ErrUnauthorized
23			}
24
25			return be.DeleteRepository(ctx, name)
26		},
27	}
28
29	return cmd
30}