mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-16 19:00:07 +00:00
fix(dependencies): avoid creating PR if it's already there
This commit is contained in:
parent
423b9a8ded
commit
eb2ff84a2c
1 changed files with 36 additions and 6 deletions
36
.github/workflows/dependencies/updater.py
vendored
36
.github/workflows/dependencies/updater.py
vendored
|
@ -1,3 +1,4 @@
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -213,8 +214,10 @@ class Dependency:
|
||||||
new_version = status["version"] if is_tag else short_sha
|
new_version = status["version"] if is_tag else short_sha
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
branch_name = f"update/{self.path}/{new_version}"
|
||||||
|
|
||||||
# Create new branch
|
# Create new branch
|
||||||
branch = Git.create_branch(self.path, new_version)
|
branch = Git.checkout_or_create_branch(branch_name)
|
||||||
|
|
||||||
# Update dependencies.yml file
|
# Update dependencies.yml file
|
||||||
self.__update_yaml(
|
self.__update_yaml(
|
||||||
|
@ -353,7 +356,7 @@ class Git:
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_branch(path: str, version: str):
|
def checkout_or_create_branch(branch_name: str):
|
||||||
# Get current branch name
|
# Get current branch name
|
||||||
result = CommandRunner.run_or_fail(
|
result = CommandRunner.run_or_fail(
|
||||||
["git", "rev-parse", "--abbrev-ref", "HEAD"], stage="GetDefaultBranch"
|
["git", "rev-parse", "--abbrev-ref", "HEAD"], stage="GetDefaultBranch"
|
||||||
|
@ -361,7 +364,13 @@ class Git:
|
||||||
Git.default_branch = result.stdout.decode("utf-8").strip()
|
Git.default_branch = result.stdout.decode("utf-8").strip()
|
||||||
|
|
||||||
# Create new branch and return created branch name
|
# Create new branch and return created branch name
|
||||||
branch_name = f"update/{path}/{version}"
|
try:
|
||||||
|
# try to checkout already existing branch
|
||||||
|
CommandRunner.run_or_fail(
|
||||||
|
["git", "checkout", branch_name], stage="CreateBranch"
|
||||||
|
)
|
||||||
|
except CommandRunner.Exception:
|
||||||
|
# otherwise create new branch
|
||||||
CommandRunner.run_or_fail(
|
CommandRunner.run_or_fail(
|
||||||
["git", "checkout", "-b", branch_name], stage="CreateBranch"
|
["git", "checkout", "-b", branch_name], stage="CreateBranch"
|
||||||
)
|
)
|
||||||
|
@ -515,6 +524,27 @@ class GitHub:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_pr(branch: str, title: str, body: str) -> None:
|
def create_pr(branch: str, title: str, body: str) -> None:
|
||||||
|
# first of all let's check if PR is already open
|
||||||
|
check_cmd = [
|
||||||
|
"gh",
|
||||||
|
"pr",
|
||||||
|
"list",
|
||||||
|
"--state",
|
||||||
|
"open",
|
||||||
|
"--head",
|
||||||
|
branch,
|
||||||
|
"--json",
|
||||||
|
"title",
|
||||||
|
]
|
||||||
|
# returncode is 0 also if no PRs are found
|
||||||
|
output = json.loads(
|
||||||
|
CommandRunner.run_or_fail(check_cmd, stage="CheckPullRequestOpen")
|
||||||
|
.stdout.decode("utf-8")
|
||||||
|
.strip()
|
||||||
|
)
|
||||||
|
# we have PR in this case!
|
||||||
|
if len(output) > 0:
|
||||||
|
return
|
||||||
cmd = [
|
cmd = [
|
||||||
"gh",
|
"gh",
|
||||||
"pr",
|
"pr",
|
||||||
|
|
Loading…
Reference in a new issue