|
4 | 4 | "context"
|
5 | 5 | "errors"
|
6 | 6 | "fmt"
|
| 7 | + "strings" |
7 | 8 | "time"
|
8 | 9 |
|
9 | 10 | "github.com/cli/go-gh/v2/pkg/api"
|
@@ -350,7 +351,8 @@ func processRepository(ctx context.Context, client *api.RESTClient, graphQlClien
|
350 | 351 | }{client}
|
351 | 352 |
|
352 | 353 | // Combine the PRs and collect stats
|
353 |
| - combined, mergeConflicts, combinedPRLink, err := CombinePRsWithStats(ctx, graphQlClient, restClientWrapper, repo, matchedPRs) |
| 354 | + commandString := buildCommandString([]string{repo.String()}) |
| 355 | + combined, mergeConflicts, combinedPRLink, err := CombinePRsWithStats(ctx, graphQlClient, restClientWrapper, repo, matchedPRs, commandString) |
354 | 356 | if err != nil {
|
355 | 357 | return fmt.Errorf("failed to combine PRs: %w", err)
|
356 | 358 | }
|
@@ -420,3 +422,78 @@ func displayStatsSummary(stats *StatsCollector, outputFormat string) {
|
420 | 422 | displayPlainStats(stats)
|
421 | 423 | }
|
422 | 424 | }
|
| 425 | + |
| 426 | +// buildCommandString reconstructs the CLI command with all set flags and arguments |
| 427 | +func buildCommandString(args []string) string { |
| 428 | + cmd := []string{"gh combine"} |
| 429 | + cmd = append(cmd, args...) |
| 430 | + |
| 431 | + if branchPrefix != "" { |
| 432 | + cmd = append(cmd, "--branch-prefix", branchPrefix) |
| 433 | + } |
| 434 | + if branchSuffix != "" { |
| 435 | + cmd = append(cmd, "--branch-suffix", branchSuffix) |
| 436 | + } |
| 437 | + if branchRegex != "" { |
| 438 | + cmd = append(cmd, "--branch-regex", branchRegex) |
| 439 | + } |
| 440 | + if len(selectLabels) > 0 { |
| 441 | + cmd = append(cmd, "--labels", strings.Join(selectLabels, ",")) |
| 442 | + } |
| 443 | + if len(ignoreLabels) > 0 { |
| 444 | + cmd = append(cmd, "--ignore-labels", strings.Join(ignoreLabels, ",")) |
| 445 | + } |
| 446 | + if len(addLabels) > 0 { |
| 447 | + cmd = append(cmd, "--add-labels", strings.Join(addLabels, ",")) |
| 448 | + } |
| 449 | + if len(addAssignees) > 0 { |
| 450 | + cmd = append(cmd, "--add-assignees", strings.Join(addAssignees, ",")) |
| 451 | + } |
| 452 | + if requireCI { |
| 453 | + cmd = append(cmd, "--require-ci") |
| 454 | + } |
| 455 | + if dependabot { |
| 456 | + cmd = append(cmd, "--dependabot") |
| 457 | + } |
| 458 | + if mustBeApproved { |
| 459 | + cmd = append(cmd, "--require-approved") |
| 460 | + } |
| 461 | + if autoclose { |
| 462 | + cmd = append(cmd, "--autoclose") |
| 463 | + } |
| 464 | + if updateBranch { |
| 465 | + cmd = append(cmd, "--update-branch") |
| 466 | + } |
| 467 | + if baseBranch != "main" && baseBranch != "" { |
| 468 | + cmd = append(cmd, "--base-branch", baseBranch) |
| 469 | + } |
| 470 | + if combineBranchName != "combined-prs" && combineBranchName != "" { |
| 471 | + cmd = append(cmd, "--combine-branch-name", combineBranchName) |
| 472 | + } |
| 473 | + if workingBranchSuffix != "-working" && workingBranchSuffix != "" { |
| 474 | + cmd = append(cmd, "--working-branch-suffix", workingBranchSuffix) |
| 475 | + } |
| 476 | + if reposFile != "" { |
| 477 | + cmd = append(cmd, "--file", reposFile) |
| 478 | + } |
| 479 | + if minimum != 2 { |
| 480 | + cmd = append(cmd, "--minimum", fmt.Sprintf("%d", minimum)) |
| 481 | + } |
| 482 | + if defaultOwner != "" { |
| 483 | + cmd = append(cmd, "--owner", defaultOwner) |
| 484 | + } |
| 485 | + if caseSensitiveLabels { |
| 486 | + cmd = append(cmd, "--case-sensitive-labels") |
| 487 | + } |
| 488 | + if noColor { |
| 489 | + cmd = append(cmd, "--no-color") |
| 490 | + } |
| 491 | + if noStats { |
| 492 | + cmd = append(cmd, "--no-stats") |
| 493 | + } |
| 494 | + if outputFormat != "table" && outputFormat != "" { |
| 495 | + cmd = append(cmd, "--output", outputFormat) |
| 496 | + } |
| 497 | + |
| 498 | + return strings.Join(cmd, " ") |
| 499 | +} |
0 commit comments