diff --git a/tangostationcontrol/tangostationcontrol/common/lofar_version.py b/tangostationcontrol/tangostationcontrol/common/lofar_version.py index be923cf9f1958555e4a397bfa5bffa33daaf3580..0a70002ed6de1fffdfc6059c6cfe2fff0beb630c 100644 --- a/tangostationcontrol/tangostationcontrol/common/lofar_version.py +++ b/tangostationcontrol/tangostationcontrol/common/lofar_version.py @@ -72,14 +72,10 @@ def get_version(repo: git.Repo = None) -> str: commit = repo.commit() filtered_tags = [tag.name for tag in repo.tags if reg.search(tag.name)] # Order tags from newest to oldest - tags = {tag.commit: tag for tag in reversed(repo.tags) if tag.name in filtered_tags} + tags = _order_tags(repo, filtered_tags) # Find closest tag for commit - closest_tag = type('',(object,),{"name": 'v0.0.0'})() - for item in commit.iter_items(repo, commit): - if item.type == 'commit' and item in tags: - closest_tag = tags[item] - break + closest_tag = _find_closest_tag(commit, repo, tags) if commit in tags: # a tag = production ready @@ -94,6 +90,19 @@ def get_version(repo: git.Repo = None) -> str: return "{}{}".format(commit_str, ".dirty" if repo.is_dirty() else "") +def _order_tags(repo, filtered_tags): + """ Helper function to order tags from newest to oldest """ + return {tag.commit: tag for tag in reversed(repo.tags) if tag.name in filtered_tags} + +def _find_closest_tag(commit, repo, tags): + """ Helper function to find closest tag for commit """ + closest_tag = type('',(object,),{"name": 'v0.0.0'})() + for item in commit.iter_items(repo, commit): + if item.type == 'commit' and item in tags: + closest_tag = tags[item] + break + return closest_tag + # at least cache the current repo version immediately try: _ = get_version()