Compare commits

...

4 Commits

Author SHA1 Message Date
Peter J. Holzer a4164eccb6 Set major to year if previous major was bigger 2025-02-03 10:00:32 +01:00
Peter J. Holzer 3548a55cce Detect multiple tags per commit 2024-08-19 23:32:56 +02:00
Peter J. Holzer 55d8b3133f Add option --force 2024-06-19 16:34:03 +02:00
Peter J. Holzer 033f882dca Omit day if possible 2024-05-25 09:04:41 +02:00
1 changed files with 21 additions and 10 deletions

31
tagger
View File

@ -7,8 +7,10 @@ import subprocess
ap = argparse.ArgumentParser()
ap.add_argument("--fullyear", action="store_true")
ap.add_argument("--day-always", action="store_true")
ap.add_argument("--prefix", default="r")
ap.add_argument("--noop", action="store_true")
ap.add_argument("--force", action="store_true")
args = ap.parse_args()
subprocess.run(["git", "pull"])
@ -18,9 +20,7 @@ need_tag = False
max_major = 0
for ln in result.stdout.split("\n"):
m = re.match(r"[0-9a-f]+ .*\btag: ([-a-z0-9._]+)", ln)
if m:
tag = m.group(1)
for tag in re.findall(r"\btag: ([-a-z0-9._]+)", ln):
if tag.startswith(args.prefix):
found_tags.add(tag)
try:
@ -34,22 +34,33 @@ for ln in result.stdout.split("\n"):
need_tag = True
print(need_tag, found_tags)
if need_tag:
if need_tag or args.force:
today = datetime.date.today()
version = []
if args.fullyear:
tag = args.prefix + today.strftime("%Y.%m.%d")
version.append(today.strftime("%Y"))
else:
year = today.year
for m in (10, 100, 1000, 10000):
if year % m >= max_major:
major = str(year % m)
break
tag = args.prefix + major + today.strftime(".%m.%d")
else:
major = str(year)
version.append(major)
version.append(today.strftime("%m"))
if args.day_always:
version.append(today.strftime("%d"))
else:
tag = args.prefix + ".".join(version)
if any(t.startswith(tag) for t in found_tags):
version.append(today.strftime("%d"))
tag = args.prefix + ".".join(version)
if tag in found_tags:
inc = 1
while f"{tag}.{inc}" in found_tags:
inc += 1
tag = f"{tag}.{inc}"
version.append("1")
while args.prefix + ".".join(version) in found_tags:
version[-1] = str(int(version[-1]) + 1)
tag = args.prefix + ".".join(version)
print(tag)
if not args.noop:
subprocess.run(["git", "tag", "-a", tag, "-m", "auto-tagged"])