annotate resfinder/cge/out/util/generator.py @ 0:55051a9bc58d draft default tip

Uploaded
author dcouvin
date Mon, 10 Jan 2022 20:06:07 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
1 #!/usr/bin/env python3
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
2
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
3 from git import Repo
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
4 from git.exc import InvalidGitRepositoryError
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
5 from datetime import datetime, timezone
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
6
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
7 from ..result import Result
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
8
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
9
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
10 class Generator():
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
11 """ """
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
12
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
13 @staticmethod
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
14 def init_software_result(name, gitdir):
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
15 """"""
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
16 version, commit = Generator.get_version_commit(gitdir)
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
17 date = datetime.now(timezone.utc).date().isoformat()
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
18
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
19 result_dict = {
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
20 "type": "software_result",
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
21 "software_name": name,
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
22 "software_version": version,
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
23 "software_commit": commit,
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
24 "run_date": date,
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
25 "key": "{}-{}".format(name, version)
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
26 }
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
27 return Result(**result_dict)
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
28
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
29 @staticmethod
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
30 def get_version_commit(gitdir):
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
31 try:
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
32 repo = Repo(gitdir)
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
33 except InvalidGitRepositoryError:
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
34 return ("unknown", "unknown")
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
35
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
36 com2tag = {}
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
37 for tag in repo.tags:
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
38 com2tag[tag.commit.hexsha] = str(tag)
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
39
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
40 version = com2tag.get(repo.commit().hexsha, repo.commit().hexsha[:7])
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
41
55051a9bc58d Uploaded
dcouvin
parents:
diff changeset
42 return (version, repo.commit().hexsha)