Initial commit
This commit is contained in:
commit
946874ee7b
1 changed files with 51 additions and 0 deletions
51
latest-tags.py
Executable file
51
latest-tags.py
Executable file
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Script for retrieving the git tags in truly chronological order.
|
||||
#
|
||||
# 2021 (c) Marcel Kapfer <opensource@mmk2410.org>
|
||||
# Licensed under the MIT/Expat License
|
||||
#
|
||||
# NOTES:
|
||||
#
|
||||
# - This is a draft! It may burn your house, delete your harddrive
|
||||
# and/or kill your kitten.
|
||||
#
|
||||
# ISSUES:
|
||||
#
|
||||
# - There are some repos who maintain different major versions over
|
||||
# some time in specific branches and that the release not on
|
||||
# master/main/whatever but on these version branches. This may
|
||||
# result in issues when using the sorting of tags retrieved by this
|
||||
# script somewhere else.
|
||||
|
||||
import subprocess
|
||||
|
||||
|
||||
def main():
|
||||
# TODO: Add user defined keywords to the list.
|
||||
ignored_keywords = ["pre", "rc", "beta", "alpha", "dev"]
|
||||
# TODO: Add a ability for the user to customize this.
|
||||
default_branch = "master"
|
||||
|
||||
# Retrieve all tags in the repo (that are fetched...)
|
||||
tags = subprocess.run(["git", "tag"], stdout=subprocess.PIPE)
|
||||
allowedTags = {}
|
||||
for tag in tags.stdout.decode('utf-8').splitlines():
|
||||
# Sort out tags that contain any `ignored_keywords`
|
||||
if len([ignored_keyword for ignored_keyword in ignored_keywords if ignored_keyword in tag]) != 0:
|
||||
continue
|
||||
# Retriev the date in ISO-8061 format from git
|
||||
date = subprocess.run(["git", "log", "-1", "--format='%aI'", tag], stdout=subprocess.PIPE)
|
||||
# Strip away the encloding quotes as well as some whitespace
|
||||
allowedTags[tag] = date.stdout.decode('utf-8').strip(" \n'")
|
||||
# Sort by keys, which are the retrieved timestampes
|
||||
allowedTags = sorted(allowedTags.items(), key=lambda item: item[1])
|
||||
|
||||
# Printing out
|
||||
for k,v in allowedTags:
|
||||
print(k)
|
||||
print("Latest tag: {}\nSecond latest tag: {}".format(allowedTags[-1][0],allowedTags[-2][0]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in a new issue