1package cmd23import (4 "errors"56 "github.com/charmbracelet/soft-serve/pkg/backend"7 "github.com/charmbracelet/soft-serve/pkg/proto"8 "github.com/charmbracelet/soft-serve/pkg/task"9 "github.com/spf13/cobra"10)1112// importCommand is the command for creating a new repository.13func importCommand() *cobra.Command {14 var private bool15 var description string16 var projectName string17 var mirror bool18 var hidden bool19 var lfs bool20 var lfsEndpoint string2122 cmd := &cobra.Command{23 Use: "import REPOSITORY REMOTE",24 Short: "Import a new repository from remote",25 Args: cobra.ExactArgs(2),26 PersistentPreRunE: checkIfCollab,27 RunE: func(cmd *cobra.Command, args []string) error {28 ctx := cmd.Context()29 be := backend.FromContext(ctx)30 user := proto.UserFromContext(ctx)31 name := args[0]32 remote := args[1]33 if _, err := be.ImportRepository(ctx, name, user, remote, proto.RepositoryOptions{34 Private: private,35 Description: description,36 ProjectName: projectName,37 Mirror: mirror,38 Hidden: hidden,39 LFS: lfs,40 LFSEndpoint: lfsEndpoint,41 }); err != nil {42 if errors.Is(err, task.ErrAlreadyStarted) {43 return errors.New("import already in progress")44 }4546 return err47 }4849 return nil50 },51 }5253 cmd.Flags().BoolVarP(&lfs, "lfs", "", false, "pull Git LFS objects")54 cmd.Flags().StringVarP(&lfsEndpoint, "lfs-endpoint", "", "", "set the Git LFS endpoint")55 cmd.Flags().BoolVarP(&mirror, "mirror", "m", false, "mirror the repository")56 cmd.Flags().BoolVarP(&private, "private", "p", false, "make the repository private")57 cmd.Flags().StringVarP(&description, "description", "d", "", "set the repository description")58 cmd.Flags().StringVarP(&projectName, "name", "n", "", "set the project name")59 cmd.Flags().BoolVarP(&hidden, "hidden", "H", false, "hide the repository from the UI")6061 return cmd62}