diff --git a/pkg/cli/pr_command.go b/pkg/cli/pr_command.go index b6582922fa..be579c91f7 100644 --- a/pkg/cli/pr_command.go +++ b/pkg/cli/pr_command.go @@ -658,7 +658,10 @@ func transferPR(prURL, targetRepo string, verbose bool) error { cloneCmd := workflow.ExecGH("repo", "clone", fmt.Sprintf("%s/%s", targetOwner, targetRepoName), tempDir) if err := cloneCmd.Run(); err != nil { - os.RemoveAll(tempDir) + // Clean up temporary directory on error + if rmErr := os.RemoveAll(tempDir); rmErr != nil && verbose { + fmt.Fprintf(os.Stderr, "Warning: failed to clean up temporary directory %s: %v\n", tempDir, rmErr) + } return fmt.Errorf("failed to clone target repository: %w", err) } @@ -667,7 +670,10 @@ func transferPR(prURL, targetRepo string, verbose bool) error { // Change to the cloned repository directory if err := os.Chdir(tempDir); err != nil { - os.RemoveAll(tempDir) + // Clean up temporary directory on error + if rmErr := os.RemoveAll(tempDir); rmErr != nil && verbose { + fmt.Fprintf(os.Stderr, "Warning: failed to clean up temporary directory %s: %v\n", tempDir, rmErr) + } return fmt.Errorf("failed to change to cloned repository directory: %w", err) } } @@ -683,7 +689,10 @@ func transferPR(prURL, targetRepo string, verbose bool) error { cloneCmd := workflow.ExecGH("repo", "clone", fmt.Sprintf("%s/%s", targetOwner, targetRepoName), tempDir) if err := cloneCmd.Run(); err != nil { - os.RemoveAll(tempDir) + // Clean up temporary directory on error + if rmErr := os.RemoveAll(tempDir); rmErr != nil && verbose { + fmt.Fprintf(os.Stderr, "Warning: failed to clean up temporary directory %s: %v\n", tempDir, rmErr) + } return fmt.Errorf("failed to clone target repository: %w", err) } @@ -692,7 +701,10 @@ func transferPR(prURL, targetRepo string, verbose bool) error { // Change to the cloned repository directory if err := os.Chdir(tempDir); err != nil { - os.RemoveAll(tempDir) + // Clean up temporary directory on error + if rmErr := os.RemoveAll(tempDir); rmErr != nil && verbose { + fmt.Fprintf(os.Stderr, "Warning: failed to clean up temporary directory %s: %v\n", tempDir, rmErr) + } return fmt.Errorf("failed to change to cloned repository directory: %w", err) } } @@ -707,7 +719,10 @@ func transferPR(prURL, targetRepo string, verbose bool) error { // Cleanup function defer func() { if needsCleanup && workingDir != "" { - os.RemoveAll(workingDir) + // Clean up temporary directory when done + if err := os.RemoveAll(workingDir); err != nil && verbose { + fmt.Fprintf(os.Stderr, "Warning: failed to clean up temporary directory %s: %v\n", workingDir, err) + } } }()