1package cmd
 2
 3import (
 4	"github.com/charmbracelet/soft-serve/server/backend"
 5	"github.com/charmbracelet/soft-serve/server/proto"
 6	"github.com/spf13/cobra"
 7)
 8
 9// importCommand is the command for creating a new repository.
10func importCommand() *cobra.Command {
11	var private bool
12	var description string
13	var projectName string
14	var mirror bool
15	var hidden bool
16
17	cmd := &cobra.Command{
18		Use:               "import REPOSITORY REMOTE",
19		Short:             "Import a new repository from remote",
20		Args:              cobra.ExactArgs(2),
21		PersistentPreRunE: checkIfCollab,
22		RunE: func(cmd *cobra.Command, args []string) error {
23			ctx := cmd.Context()
24			be := backend.FromContext(ctx)
25			name := args[0]
26			remote := args[1]
27			if _, err := be.ImportRepository(ctx, name, remote, proto.RepositoryOptions{
28				Private:     private,
29				Description: description,
30				ProjectName: projectName,
31				Mirror:      mirror,
32				Hidden:      hidden,
33			}); err != nil {
34				return err
35			}
36			return nil
37		},
38	}
39
40	cmd.Flags().BoolVarP(&mirror, "mirror", "m", false, "mirror the repository")
41	cmd.Flags().BoolVarP(&private, "private", "p", false, "make the repository private")
42	cmd.Flags().StringVarP(&description, "description", "d", "", "set the repository description")
43	cmd.Flags().StringVarP(&projectName, "name", "n", "", "set the project name")
44	cmd.Flags().BoolVarP(&hidden, "hidden", "H", false, "hide the repository from the UI")
45
46	return cmd
47}