From 3bc37d32a64efc276ef882ff5695929a2e89b850 Mon Sep 17 00:00:00 2001 From: Romain Bertrand Date: Wed, 24 Dec 2025 10:15:50 +0100 Subject: [PATCH] feat: "pr create --assignee" implementation --- cmd/pr.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/cmd/pr.go b/cmd/pr.go index e6d75b2..df488d8 100644 --- a/cmd/pr.go +++ b/cmd/pr.go @@ -68,6 +68,7 @@ func init() { prCreateCmd.Flags().StringP("body", "b", "", "Body for the pull request") prCreateCmd.Flags().StringP("head", "H", "", "Head branch") prCreateCmd.Flags().StringP("base", "B", "", "Base branch (default: main)") + prCreateCmd.Flags().StringSliceP("assignee", "a", []string{}, "Assign people by their login. Use \"@me\" to self-assign.") prMergeCmd.Flags().StringP("repo", "R", "", "Repository in owner/name format") prMergeCmd.Flags().String("merge-method", "merge", "Merge method: merge, rebase, squash") @@ -173,6 +174,7 @@ func runPRCreate(cmd *cobra.Command, args []string) error { body, _ := cmd.Flags().GetString("body") head, _ := cmd.Flags().GetString("head") base, _ := cmd.Flags().GetString("base") + assignees, _ := cmd.Flags().GetStringSlice("assignee") if base == "" { base = "main" @@ -201,11 +203,26 @@ func runPRCreate(cmd *cobra.Command, args []string) error { return err } + // Resolve @me in assignees + resolvedAssignees := make([]string, 0, len(assignees)) + for _, assignee := range assignees { + if assignee == "@me" { + user, _, err := client.GetMyUserInfo() + if err != nil { + return fmt.Errorf("failed to get current user info: %w", err) + } + resolvedAssignees = append(resolvedAssignees, user.UserName) + } else { + resolvedAssignees = append(resolvedAssignees, assignee) + } + } + pr, _, err := client.CreatePullRequest(owner, name, gitea.CreatePullRequestOption{ - Title: title, - Body: body, - Head: head, - Base: base, + Title: title, + Body: body, + Head: head, + Base: base, + Assignees: resolvedAssignees, }) if err != nil { return fmt.Errorf("failed to create pull request: %w", err)