|
|
|
|
@ -1,3 +1,4 @@ |
|
|
|
|
import json |
|
|
|
|
import os |
|
|
|
|
import re |
|
|
|
|
import shutil |
|
|
|
|
@ -213,8 +214,10 @@ class Dependency: |
|
|
|
|
new_version = status["version"] if is_tag else short_sha |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
branch_name = f"update/{self.path}/{new_version}" |
|
|
|
|
|
|
|
|
|
# Create new branch |
|
|
|
|
branch = Git.create_branch(self.path, new_version) |
|
|
|
|
branch = Git.checkout_or_create_branch(branch_name) |
|
|
|
|
|
|
|
|
|
# Update dependencies.yml file |
|
|
|
|
self.__update_yaml( |
|
|
|
|
@ -353,7 +356,7 @@ class Git: |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def create_branch(path: str, version: str): |
|
|
|
|
def checkout_or_create_branch(branch_name: str): |
|
|
|
|
# Get current branch name |
|
|
|
|
result = CommandRunner.run_or_fail( |
|
|
|
|
["git", "rev-parse", "--abbrev-ref", "HEAD"], stage="GetDefaultBranch" |
|
|
|
|
@ -361,10 +364,16 @@ class Git: |
|
|
|
|
Git.default_branch = result.stdout.decode("utf-8").strip() |
|
|
|
|
|
|
|
|
|
# Create new branch and return created branch name |
|
|
|
|
branch_name = f"update/{path}/{version}" |
|
|
|
|
CommandRunner.run_or_fail( |
|
|
|
|
["git", "checkout", "-b", branch_name], stage="CreateBranch" |
|
|
|
|
) |
|
|
|
|
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( |
|
|
|
|
["git", "checkout", "-b", branch_name], stage="CreateBranch" |
|
|
|
|
) |
|
|
|
|
return branch_name |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
@ -515,6 +524,27 @@ class GitHub: |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
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 = [ |
|
|
|
|
"gh", |
|
|
|
|
"pr", |
|
|
|
|
|