#!/usr/bin/env python3

import argparse
import re
import sys

version_builders = {
    "mike-version": lambda v: "{}".format(".".join(v.split(".")[0:2])),
}

pre_version_builders = {
    "apk": lambda v, s: "{}_{}".format(v, s),
    "dpkg": lambda v, s: "{}~{}".format(v, s),
    "mike-title": lambda v, s: "{}-{}".format(v, s),
    "mike-version": lambda v, s: "{}".format(".".join(v.split(".")[0:2])),
}
re_tag = re.compile("([0-9].[0-9]+.[0-9]+)(-(pre[0-9]+))?")


parser = argparse.ArgumentParser(
    prog="git-tag-version",
    description="Small helper utilitiy for managing version strings from git tag names.",
)
parser.add_argument(
    "-p",
    choices=pre_version_builders.keys(),
    help="target version schema to be used",
    required=True,
)
parser.add_argument("version")
args = vars(parser.parse_args())

m = re_tag.match(args["version"])
if not m:
    print("incompatible versioned tag string :-(")
    sys.exit(1)

if not m.group(3):
    print(version_builders.get(args["p"], lambda v: v)(m.group(1)))
else:
    print(pre_version_builders[args["p"]](m.group(1), m.group(3)))
