#!/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)))
