@echo off
set OLDDIR=%CD%
cd /d %~dp0

IF NOT EXIST .\.git\NUL GOTO not_git

for /f "delims=" %%a in ('git describe --tags --long --match "v*" ') do @set VERSION=%%a
for /f "delims=" %%a in ('git describe --tags --abbrev^=0 --match "v*" ') do @set TAG=%%a-
for /f "delims=" %%a in ('git rev-parse --abbrev-ref HEAD') do @set BRANCH=%%a

REM sanitize BRANCH for filename
set "BRANCH=%BRANCH:/=-%"
set "BRANCH=%BRANCH:"=-%"
set "BRANCH=%BRANCH:<=-%"
set "BRANCH=%BRANCH:>=-%"
set "BRANCH=%BRANCH:|=-%"
set "BRANCH=%BRANCH:@=-%"
set "BRANCH=%BRANCH:_=-%"
set "BRANCH=%BRANCH:(=-%"
set "BRANCH=%BRANCH:)=-%"

REM remove anotated tag from VERSION
setlocal enabledelayedexpansion
call set VERSION=%%VERSION:!TAG!=%%
setlocal disabledelayedexpansion
echo #define GPAC_GIT_REVISION "%VERSION%-%BRANCH%" > test.h

:write_file
if not exist include\gpac\revision.h goto create
ECHO n|COMP test.h include\gpac\revision.h > nul
if errorlevel 1 goto create
DEL test.h
goto done

:create
MOVE /Y test.h include\gpac\revision.h
goto done

:not_git
echo "not a git dir"
find /c "-DEV" include\gpac\version.h >nul
if %errorlevel% equ 1 goto rel_tag
echo "unknown tag"
@echo off
echo #define GPAC_GIT_REVISION "UNKNOWN_REV" > test.h
goto write_file

:rel_tag
echo "release tag"
@echo off
echo #define GPAC_GIT_REVISION "release" > test.h
goto write_file


:done
cd /d %OLDDIR%
exit/b
