diff --git a/cmd/cloud.go b/cmd/cloud.go index 0f83ce8a..feb8da39 100644 --- a/cmd/cloud.go +++ b/cmd/cloud.go @@ -78,7 +78,7 @@ type startRequest struct { TagMessage string `json:"message,omitempty"` } -func ShowNewProjectImport(ctx context.Context, logger logger.Logger, cmd *cobra.Command, apiUrl, apikey, projectId string, project *project.Project, dir string, isImport bool) { +func ShowNewProjectImport(ctx context.Context, logger logger.Logger, cmd *cobra.Command, apiUrl string, apikey string, projectId string, project *project.Project, dir string, isImport bool) { title := "Import Project" var message string if isImport { @@ -814,6 +814,7 @@ func init() { rootCmd.AddCommand(cloudCmd) rootCmd.AddCommand(cloudDeployCmd) cloudCmd.AddCommand(cloudDeployCmd) + cloudDeployCmd.Flags().StringP("dir", "d", ".", "The directory to the project to deploy") cloudDeployCmd.Flags().String("deploymentId", "", "Used to track a specific deployment") cloudDeployCmd.Flags().Bool("ci", false, "Used to track a specific CI job") diff --git a/cmd/project.go b/cmd/project.go index a3654d90..67cd1fb6 100644 --- a/cmd/project.go +++ b/cmd/project.go @@ -798,11 +798,29 @@ Examples: agentuity project import --dir /path/to/project`, Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { + name, _ := cmd.Flags().GetString("name") + description, _ := cmd.Flags().GetString("description") + orgId, _ := cmd.Flags().GetString("org-id") + apikey, _ := cmd.Flags().GetString("apikey") + ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGINT, syscall.SIGTERM) defer cancel() - logger := env.NewLogger(cmd) context := project.EnsureProject(ctx, cmd) + logger := env.NewLogger(cmd) + + // headless mode for nova + if apikey != "" && orgId != "" && name != "" && description != "" { + context.Project.Name = name + context.Project.Description = description + _, err := context.Project.Import(ctx, logger, context.APIURL, apikey, orgId, true) + if err != nil { + errsystem.New(errsystem.ErrImportingProject, err, errsystem.WithContextMessage("Error importing project")).ShowErrorAndExit() + } + return + } + ShowNewProjectImport(ctx, logger, cmd, context.APIURL, context.Token, "", context.Project, context.Dir, true) + }, } @@ -846,4 +864,13 @@ func init() { projectNewCmd.Flags().String("templates-dir", "", "The directory to load the templates. Defaults to loading them from the github.com/agentuity/templates repository") projectNewCmd.Flags().String("auth", "project", "The authentication type for the agent (project, webhook, or none)") projectNewCmd.Flags().String("action", "github-app", "The action to take for the project (github-action, github-app, none)") + + projectImportCmd.Flags().String("apikey", "", "The API key to use for the project") + projectImportCmd.Flags().String("name", "", "The name of the project to import") + projectImportCmd.Flags().String("description", "", "The description of the project to import") + + projectImportCmd.Flags().MarkHidden("apikey") + projectImportCmd.Flags().MarkHidden("name") + projectImportCmd.Flags().MarkHidden("description") + projectImportCmd.Flags().MarkHidden("org-id") }