import sys
import re
from datetime import datetime
import os

# Проверяем количество аргументов
if len(sys.argv) < 3:
    print("using: python %s <work_dir> <input_file>" % sys.argv[0])
    sys.exit(1)


def IncrementBuild(file_name):
    new_name = file_name+'.new'
    now = datetime.now()

    year = (now.year % 100) # год - последние 2 цифры
    month = now.month       # номер месяца
    day = now.day           # номер дня
    hour = now.hour
    min = now.minute
    sec = now.second

    strYear  = "{:02d}".format(year)    # строковое значение года из двух цифр
    strMonth = "{:02d}".format(month)   # строковое значение месяца из двух цифр
    strDay   = "{:02d}".format(day)     # строковое значение дня из двух цифр
    strHour  = "{:02d}".format(hour)    # строковое значение часа из двух цифр
    strMin   = "{:02d}".format(min)     # строковое значение минут из двух цифр
    strSec   = "{:02d}".format(sec)     # строковое значение секунд из двух цифр

    with open(file_name, mode='rt', encoding="UTF-8") as inpF:
        with open(new_name, mode='wt', encoding="UTF-8") as outF:
            while True:
                line = inpF.readline() # читаем первую строку
                if not line:
                    break
                match = re.search(r'(\s*#define\s+VERSION_MAJ\s+)(\d+)$', line)
                if match:
                    # если сработал первый регексп - то это основная версия
                    line = match[1] + strYear + '\n';   # год
                else:
                    match = re.search(r'(\s*#define\s+VERSION_MIN\s+)(\d+)$', line)
                    if match:
                        # если сработал второй регексп - то это подверсия
                        line = match[1] + strMonth + '\n';	# месяц
                    else:
                        match = re.search(r'(\s*#define\s+VERSION_REV\s+)(\d+)$', line)
                        if match:
                            # если сработал третий регексп - то это день+час
                            line = match[1] + strDay + strHour + '\n';
                        else:
                            match = re.search(r'(\s*#define\s+VERSION_BLD\s+)(\d+)$', line)
                            if match:
                                # если сработал четвёртый регексп - то это минуты+секунды
                                line = match[1] + strMin + strSec + '\n';

                outF.write(line)
            outF.close()
        inpF.close()

    if os.path.exists(new_name) and os.path.isfile(new_name):
        os.remove(file_name)
        os.rename(new_name, file_name)

work_dir = sys.argv[1]
input_file = sys.argv[2]
file_name = work_dir + input_file

IncrementBuild(file_name)

