@echo off
SETLOCAL

set origdir=%cd%
cd /d %~dp0..\..
set base_dir=%cd%
cd /d %origdir%


if exist "C:\Program Files\Git\usr\bin\sed.exe" ( set SED="C:\Program Files\Git\usr\bin\sed.exe")
if exist "C:\Program Files (x86)\Git\bin\sed.exe" ( set SED="C:\Program Files (x86)\Git\bin\sed.exe")

if %SED% == "" ( 
	echo can not find sed.exe
	goto :end
)

SETLOCAL EnableDelayedExpansion
FOR /F "tokens=1 delims=" %%A in ('git describe --tags --long') do SET current_tag=%%A
FOR /F "tokens=1 delims=" %%A in ('echo !current_tag! ^| !sed! "s/v[0-9]*\.[0-9]*\.[0-9]*-\([0-9]*\).*/\1/"') do SET commits_since_tag=%%A

call :setVersion "%base_dir%\Source\Project64-core\version.h" !commits_since_tag!
call :setVersion "%base_dir%\Source\nragev20\version.h" !commits_since_tag!
call :setVersion "%base_dir%\Source\RSP\version.h" !commits_since_tag!
call :setVersion "%base_dir%\Source\Glide64\version.h" !commits_since_tag!

ENDLOCAL

goto :eof

:setVersion
set version_file=%~1
set out_file=%~1.out
set build_no=%~2

if exist "%out_file%" del "%out_file%"

SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ "%version_file%""`) do (
    set "line=%%a"
    SETLOCAL EnableDelayedExpansion
    set "line=!line:9999=%build_no%!"
    set "line=!line:*:=!"
    echo(!line!>>!out_file!
    ENDLOCAL
)
ENDLOCAL

if exist "%out_file%" ( 
	if exist "%version_file%" ( 
		del "%version_file%"
		move "%out_file%" "%version_file%"
	)
)

goto :eof