get_bundle_name.py 1.63 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
import re
import subprocess
import os
import os.path
import sys


def get_version_information(top_level_dir):
    assert isinstance(top_level_dir, str) or isinstance(top_level_dir, unicode)
    if os.path.exists(top_level_dir + os.path.sep + ".git"):
        try:
            version_info = subprocess.check_output(
                "git describe --abbrev=0 --tags --exact-match",
                shell=True,
                stderr=subprocess.PIPE
            ).strip()
        except subprocess.CalledProcessError:
            version_info = subprocess.check_output(
                "git rev-parse --abbrev-ref HEAD",
                shell=True
            ).strip()
            version_info += "-" + subprocess.check_output(
                "git --no-pager log -1 --pretty=format:%H",
                shell=True
            ).strip()
    else:
        dir_name = os.path.basename(top_level_dir)
        match = re.match(r"kumir2-(.+)", dir_name)
        version_info = match.group(1)
    return version_info




def main():
    version_name = get_version_information(os.getcwd())
    prefix = ""
    suffix = ""
    nl = ""
    outfile = sys.stdout
    for arg in sys.argv:
        if arg.startswith("--prefix="):
            prefix = arg[9:]
        elif arg.startswith("--suffix="):
            suffix = arg[9:]
        elif arg.startswith("--out="):
            outfile = open(arg[6:], 'w')
        elif "--nl" == arg:
            if os.name.startswith("nt"):
                nl = "\r\n"
            else:
                nl = "\n"
    output = prefix + version_name + suffix + nl
    outfile.write(output)
    outfile.close()


if __name__ == "__main__":
    main()