diff --git a/CHANGES.md b/CHANGES.md index 1038813..37d17c3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,9 @@ Unreleased +- If a PR already exists from a previous failed run, force push to update the + existing branch and PR. + ## Version 0.1.1 Released 2025-01-14 diff --git a/src/modify_repos/repo/github.py b/src/modify_repos/repo/github.py index be0493e..6d812ab 100644 --- a/src/modify_repos/repo/github.py +++ b/src/modify_repos/repo/github.py @@ -66,14 +66,21 @@ class GitHubRepo(GitRepo): super().submit() return - self.git_cmd("push", "--set-upstream", "origin", self.script.branch) - self.gh_cmd( - "pr", - "create", - "--base", - self.script.target, - "--title", - self.script.title, - "--body", - self.script.body, - ) + result = self.gh_cmd("pr", "view", "--json", "closed", "--jq", ".closed") + has_pr = not result.returncode and result.stdout.strip() == "false" + + if not has_pr: + self.git_cmd("push", "--set-upstream", "origin", self.script.branch) + self.gh_cmd( + "pr", + "create", + "--base", + self.script.target, + "--title", + self.script.title, + "--body", + self.script.body, + ) + else: + # If open PR already exists from previous run, force push. + self.git_cmd("push", "--force", "origin", self.script.branch)