Skip to content

Commit 4fdce7f

Browse files
committed
fix: Remove merge confirmation prompt when using -m flag
- Remove double confirmation when using --merge/-m flag - Better error handling for 422 approval errors - Auto-skip approval and proceed to merge when user is PR author - Direct merge flow: check mergeable -> merge -> cleanup branches
1 parent 1eb12e1 commit 4fdce7f

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

go-version/cmd/qkflow/commands/pr_approve.go

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"os"
66
"strconv"
7+
"strings"
78

89
"github.com/Wangggym/quick-workflow/internal/git"
910
"github.com/Wangggym/quick-workflow/internal/github"
@@ -225,15 +226,35 @@ func runPRApprove(cmd *cobra.Command, args []string) {
225226

226227
// 批准 PR
227228
ui.Info(fmt.Sprintf("Approving PR #%d...", prNumber))
229+
approvalSucceeded := true
228230
if err := ghClient.ApprovePullRequest(owner, repo, prNumber, comment); err != nil {
229-
ui.Error(fmt.Sprintf("Failed to approve PR: %v", err))
230-
return
231+
errMsg := err.Error()
232+
if strings.Contains(errMsg, "422") {
233+
approvalSucceeded = false
234+
ui.Warning("Cannot approve this PR (you may be the author or already approved)")
235+
fmt.Println()
236+
237+
// 如果带了 -m 参数,直接跳过批准继续合并
238+
if approveAndMerge {
239+
ui.Info("💡 Skipping approval, proceeding directly to merge...")
240+
} else {
241+
// 没有 -m 参数,提示错误并退出
242+
ui.Error("Approval failed. If you want to merge directly, use the -m flag:")
243+
ui.Info(fmt.Sprintf(" qkflow pr approve %d -m", prNumber))
244+
return
245+
}
246+
} else {
247+
ui.Error(fmt.Sprintf("Failed to approve PR: %v", err))
248+
return
249+
}
231250
}
232251

233-
if comment != "" {
234-
ui.Success(fmt.Sprintf("✅ PR approved with comment: %s", comment))
235-
} else {
236-
ui.Success("✅ PR approved!")
252+
if approvalSucceeded {
253+
if comment != "" {
254+
ui.Success(fmt.Sprintf("✅ PR approved with comment: %s", comment))
255+
} else {
256+
ui.Success("✅ PR approved!")
257+
}
237258
}
238259

239260
// 如果需要自动合并
@@ -247,14 +268,7 @@ func runPRApprove(cmd *cobra.Command, args []string) {
247268
return
248269
}
249270

250-
// 确认合并
251-
confirmMerge, err := ui.PromptConfirm("Proceed with merging the PR?", true)
252-
if err != nil || !confirmMerge {
253-
ui.Info("Merge skipped")
254-
return
255-
}
256-
257-
// 执行合并(复用 pr merge 的逻辑)
271+
// 执行合并
258272
ui.Info(fmt.Sprintf("Merging PR #%d...", prNumber))
259273
if err := ghClient.MergePullRequest(owner, repo, prNumber, pr.Title); err != nil {
260274
ui.Error(fmt.Sprintf("Failed to merge PR: %v", err))

0 commit comments

Comments
 (0)