#!/bin/sh
''''[ ! -z $VIRTUAL_ENV ] && exec python -u -- "$0" ${1+"$@"}; command -v python3 > /dev/null && exec python3 -u -- "$0" ${1+"$@"}; exec python2 -u -- "$0" ${1+"$@"} # '''

import os
import sys
import re
import argparse

HERE = os.path.dirname(__file__)
READIES = os.path.abspath(os.path.join(HERE, ".."))
sys.path.insert(0, READIES)
import paella  # noqa: F401

parser = argparse.ArgumentParser(description='Print compiler version')
parser.add_argument('-c', '--compiler', type=str, help="Compiler (gcc, clang, etc). Default: CC environment variable or 'cc'.")
parser.add_argument('--full', action="store_true", default=False, help='Output full version')
parser.add_argument('--raw', action="store_true", default=False, help='Output raw version')
# parser.add_argument('--nop', action="store_true", default=False, help='Dry run')
args = parser.parse_args()

cc = args.compiler
if not cc:
    cc = ENV['CC']
if not cc:
    cc = "cc"
ccver_str = sh(f"{cc} --version", lines=True)[0]
m = re.match("\w+ \([^)]*\) (\d+)\.(\d+)\.(\d+)", ccver_str)
if m:
    major, minor, patch = m[1], m[2], m[3]
else:
    m = re.match(r".*clang version (\d+)\.(\d+)\.(\d+)", ccver_str)
    if m:
        major, minor, patch = m[1], m[2], m[3]
    else:
        fatal("Cannot match known compiler")
if args.raw:
    ccver = "{}.{}.{}".format(int(major), int(minor), int(patch))
else:
    if args.full:
        ccver = "{:02d}{:02d}{:02d}".format(int(major), int(minor), int(patch))
    else:
        ccver = "{:02d}{:02d}".format(int(major), int(minor))
print(ccver)
