#!/bin/sh

# Скрипт генерирует версию сборки в файл version.h

OUTFILE=libs/Version.h

# rm $OUTFILE > /dev/null 2>&1

# echo -e "\033[0;32m~~~ Version generation ~~~\033[0m";
printf "version: "

if ! git --version > /dev/null 2>&1; then
	printf "\n\033[0;31mGIT is not found!\033[0m\n"; exit 1;
fi

if ! git status > /dev/null 2>&1; then
	printf "\n\033[0;31mThis is not a git repo!\033[0m\n"; exit 1;
fi

version=$(git describe --tags --always --dirty --abbrev=8 || echo unknown);
# Remove tag prefix from version
# Версия git в последнем поле после '_'
if echo "$version" | grep -q "_"; then
	printf "%s => " "$version"
	version=$(echo "$version" | awk -F '_' '{print $NF}')
fi
version=$(echo "$version" | sed "s/-g/-/")		# Remove 'g' from git hash
echo "$version"

git_build="0x$(git rev-parse --short=8 HEAD | tr 'a-f' 'A-F')"
date="$(date +0x00%y%m%d)"

# Пишем в файл.
cat << --- > $OUTFILE
#ifndef __VERSION_H_
#define __VERSION_H_

// Данный файл обновляется автоматически из скрипта version.sh

// Хеш коммита в репозитории GIT.
#define GIT_BUILD			$git_build

// Дата компиляции, YYMMDD, всё в bcd.
#define BUILD_DATE			$date

// Версия CAN-прошивки.
#define CAN_FW_VERSION		1

// Версия из GIT.
#define GIT_VERSION			"$version"

#endif /* __VERSION_H_ */
---
