Compare commits
3 commits
94b993ccf5
...
0b3daf595a
Author | SHA1 | Date | |
---|---|---|---|
0b3daf595a | |||
0f4899bf39 | |||
72e9add5af |
3 changed files with 39 additions and 59 deletions
|
@ -1,5 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import subprocess as sub
|
import subprocess as sub
|
||||||
|
from system_repository import SystemRepository
|
||||||
|
from release_type import ReleaseType
|
||||||
|
|
||||||
# define semantics for release types by commit messages
|
# define semantics for release types by commit messages
|
||||||
## snapshot - snapshot release
|
## snapshot - snapshot release
|
||||||
|
@ -15,63 +17,18 @@ FORMAT_DEC = "%d"
|
||||||
PRETTY_OPTION = '--pretty='
|
PRETTY_OPTION = '--pretty='
|
||||||
DECORATE_OPTION = '--decorate=full'
|
DECORATE_OPTION = '--decorate=full'
|
||||||
|
|
||||||
|
|
||||||
|
# git log --oneline --format="%s %b" origin/master...HEAD
|
||||||
|
|
||||||
class GitRepo():
|
class GitRepo():
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.commits = None
|
self.latest_commit = None
|
||||||
self.tags = None
|
self.system_repository = SystemRepository()
|
||||||
|
|
||||||
def __clean_commit_string(self, commit_string):
|
def get_latest_commit(self):
|
||||||
return commit_string.replace('\"', "").replace('\n', "").split()
|
self.latest_commit = self.system_repository.run_checked('git', 'log', '--oneline', '--format="%s %b"', '-n' + '1')
|
||||||
|
|
||||||
def __clean_tag_string(self, tag_string):
|
|
||||||
return tag_string.replace(" ", "").replace('\n', "")
|
|
||||||
|
|
||||||
def get_tags(self):
|
|
||||||
stream = sub.Popen([GIT,
|
|
||||||
LOG,
|
|
||||||
PRETTY_OPTION + FORMAT_DEC,
|
|
||||||
DECORATE_OPTION],
|
|
||||||
stdout=sub.PIPE,
|
|
||||||
stderr=sub.PIPE,
|
|
||||||
text=True,
|
|
||||||
encoding="UTF-8")
|
|
||||||
stdout = stream.stdout.readlines()
|
|
||||||
stderr = stream.stderr.readlines()
|
|
||||||
|
|
||||||
if len(stderr) > 0:
|
|
||||||
raise Exception(f"Git command failed with: {stderr}")
|
|
||||||
|
|
||||||
return stdout
|
|
||||||
|
|
||||||
def get_commits(self):
|
|
||||||
stream = sub.Popen([GIT,
|
|
||||||
LOG,
|
|
||||||
PRETTY_OPTION + FORMAT],
|
|
||||||
stdout=sub.PIPE,
|
|
||||||
stderr=sub.PIPE,
|
|
||||||
text=True,
|
|
||||||
encoding="UTF-8")
|
|
||||||
stdout = stream.stdout.readlines()
|
|
||||||
stderr = stream.stderr.readlines()
|
|
||||||
|
|
||||||
if len(stderr) > 0:
|
|
||||||
raise Exception(f"Git command failed with: {stderr}")
|
|
||||||
|
|
||||||
self.tags = self.get_tags()
|
|
||||||
self.commits = {}
|
|
||||||
|
|
||||||
if len(self.tags) != len(stdout):
|
|
||||||
raise Exception("Tags list did not match commits list")
|
|
||||||
|
|
||||||
for i, elem in enumerate(stdout):
|
|
||||||
commit_string = self.__clean_commit_string(elem)
|
|
||||||
|
|
||||||
commit_id = commit_string[0]
|
|
||||||
commit_message = " ".join(commit_string[1:len(commit_string)])
|
|
||||||
commit_tag = self.__clean_tag_string(self.tags[i])
|
|
||||||
|
|
||||||
self.commits[commit_id] = [commit_tag, commit_message]
|
|
||||||
|
|
||||||
return self.commits
|
|
||||||
|
|
||||||
|
def get_release_type_from_latest_commit(self):
|
||||||
|
if self.latest_commit is None:
|
||||||
|
self.get_latest_commit()
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import version_repository
|
from version_repository import VersionRepository
|
||||||
import release_type
|
from release_type import ReleaseType
|
||||||
|
|
||||||
class InitReleaseService():
|
class InitReleaseService():
|
||||||
|
|
||||||
def __init__(self, commit_id, file):
|
def __init__(self, commit_id, file):
|
||||||
|
@ -15,7 +16,7 @@ class InitReleaseService():
|
||||||
|
|
||||||
def get_version(self, release_type):
|
def get_version(self, release_type):
|
||||||
self.version_repo = VersionRepository(self.file)
|
self.version_repo = VersionRepository(self.file)
|
||||||
return repo.get_version(release_type)
|
return self.version_repo.get_version(release_type)
|
||||||
|
|
||||||
def create_release_version(self):
|
def create_release_version(self):
|
||||||
commit_message = self.read_commit_message(self.commit_id)
|
commit_message = self.read_commit_message(self.commit_id)
|
||||||
|
|
22
system_repository.py
Normal file
22
system_repository.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import subprocess as sub
|
||||||
|
|
||||||
|
class SystemRepository():
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.stdout = [""]
|
||||||
|
self.stderr = [""]
|
||||||
|
|
||||||
|
def run(self, *args):
|
||||||
|
stream = sub.Popen(args,
|
||||||
|
stdout=sub.PIPE,
|
||||||
|
stderr=sub.PIPE,
|
||||||
|
text=True,
|
||||||
|
encoding="UTF-8")
|
||||||
|
self.stdout = stream.stdout.readlines()
|
||||||
|
self.stderr = stream.stderr.readlines()
|
||||||
|
|
||||||
|
def run_checked(self, *args):
|
||||||
|
self.run(args)
|
||||||
|
|
||||||
|
if len(self.stderr) > 0:
|
||||||
|
raise Exception(f"Command failed with: {self.stderr}")
|
Loading…
Reference in a new issue