old_console/make_release.py
2024-11-02 14:12:45 +03:00

37 lines
No EOL
1.1 KiB
Python

#!/usr/bin/python3
import os
import re
import git
from pathlib import Path
def main():
main_branch='master'
cwd=Path(os.path.abspath(__file__)).parents[0]
repo=git.Repo(cwd)
repo.git.fetch('origin', '+refs/heads/*:refs/remotes/origin/*', '+refs/tags/*:refs/tags/*')
orig_tag=next((tag for tag in repo.tags if tag.commit == repo.head.commit), None)
if orig_tag is None:
raise Exception(f"no tag on current commit {repo.head.commit}")
release_tag=re.search('^(\d+.\d+.\d+)-.*',orig_tag.name)
if release_tag is None or release_tag[1] is None:
raise Exception(f"release_tag is None. Error")
print(f'release candidate tag name is {orig_tag.name}')
print(f'release tag name is {release_tag[1]}')
repo.git.checkout(main_branch)
repo.git.merge('--no-ff','-X','theirs','-m',f'"release {release_tag[1]}"',orig_tag.name)
repo.create_tag(release_tag[1],ref='HEAD', message=f'release {release_tag[1]}')
repo.git.push()
repo.git.push('--tags')
#git logf --first-parent master -n 2
print('finished successfully', flush=True)
if __name__ == '__main__':
main()