0
|
1 #!/usr/bin/env python3
|
|
2
|
|
3 from git import Repo
|
|
4 from git.exc import InvalidGitRepositoryError
|
|
5 from datetime import datetime, timezone
|
|
6
|
|
7 from ..result import Result
|
|
8
|
|
9
|
|
10 class Generator():
|
|
11 """ """
|
|
12
|
|
13 @staticmethod
|
|
14 def init_software_result(name, gitdir):
|
|
15 """"""
|
|
16 version, commit = Generator.get_version_commit(gitdir)
|
|
17 date = datetime.now(timezone.utc).date().isoformat()
|
|
18
|
|
19 result_dict = {
|
|
20 "type": "software_result",
|
|
21 "software_name": name,
|
|
22 "software_version": version,
|
|
23 "software_commit": commit,
|
|
24 "run_date": date,
|
|
25 "key": "{}-{}".format(name, version)
|
|
26 }
|
|
27 return Result(**result_dict)
|
|
28
|
|
29 @staticmethod
|
|
30 def get_version_commit(gitdir):
|
|
31 try:
|
|
32 repo = Repo(gitdir)
|
|
33 except InvalidGitRepositoryError:
|
|
34 return ("unknown", "unknown")
|
|
35
|
|
36 com2tag = {}
|
|
37 for tag in repo.tags:
|
|
38 com2tag[tag.commit.hexsha] = str(tag)
|
|
39
|
|
40 version = com2tag.get(repo.commit().hexsha, repo.commit().hexsha[:7])
|
|
41
|
|
42 return (version, repo.commit().hexsha)
|