@goto INITIALIZE
:BEGIN
if "%~0"=="REBUILD_ALL_R.cmd" set is_nested_call$$=1

if !is_nested_call$$!==1 goto START
cls
echo RE-BUILDING ALL PROJECTS ΔΔ "RELEASE":
echo ίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίίί

:START
call :REBUILD_PROJECT "ConfirmationPause"
if !errorlevel! neq 0 goto FAILURE

call :REBUILD_PROJECT "SqlCatPP"
if !errorlevel! neq 0 goto FAILURE

call :REBUILD_PROJECT "SqlToCsvExport"
if !errorlevel! neq 0 goto FAILURE

call :REBUILD_PROJECT "TypeInColor"
if !errorlevel! neq 0 goto FAILURE

rem call :REBUILD_PROJECT ""
rem if !errorlevel! neq 0 goto FAILURE

call :RESTORE_DIR
if !errorlevel! neq 0 goto ERROR
::==================================================================================================

:SUCCESS
if !is_nested_call$$!==1 goto FINISH
echo.
echo άάά REBUILD ALL PROJECTS (RELEASE) ΔΔ SUCCESS άάά
goto FINISH

:FAILURE
if !is_nested_call$$!==1 goto ERROR
echo.
echo άάά ## REBUILD ALL PROJECTS (RELEASE) ΔΔ FAILURE άάά
goto ERROR

::==================================================================================================

:REBUILD_PROJECT
verify # 2>nul
setlocal enableextensions disabledelayedexpansion
if errorlevel 1 goto CANT_SWITCH_ON_SIMPLE_CMD_PROCESSING
if "%~1"=="" (
echo ## Empty parameter for REBUILD_PROJECT subroutine.
goto END_LOCAL_RETURN_ERROR )

call :CHANGE_DIR "%initial_cd$$%\%~1"
if %errorlevel% neq 0 goto END_LOCAL_RETURN_ERROR

if "%~1|%ts_most_clean_rebuild%"=="TypeScript|1" (
call CLEAN-REBUILD-R.cmd ) else call REBUILD-R.cmd
if %errorlevel% neq 0 goto END_LOCAL_RETURN_ERROR

echo.
echo ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ
goto END_LOCAL_RETURN_SUCCESS

::==================================================================================================

:CHANGE_DIR
if "%~1"=="" (
echo ## Empty parameter for CHANGE_DIR subroutine.
goto RETURN_ERROR )
call :RESET_ERROR
echo.
echo * Changing directory to: "%~1" ...
cd /d "%~1"
goto :EOF

:RESTORE_DIR
call :RESET_ERROR
if /i "%CD%"=="%initial_cd$$%" goto :EOF
echo.
echo * Restoring directory to: "%initial_cd$$%" ...
cd /d "%initial_cd$$%"
echo.
echo ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ
goto :EOF
echo.
echo ## Can not restore directory to: "%initial_cd$$%".
goto TERMINATED

::==================================================================================================

:EXEC_CMD
call :SET_ERROR
setlocal enableextensions disabledelayedexpansion
if errorlevel 1 goto CANT_SWITCH_ON_SIMPLE_CMD_PROCESSING
echo.
echo ^>^> %* ...
%*
if %errorlevel% neq 0 goto END_LOCAL_RETURN_ERROR
goto END_LOCAL_RETURN_SUCCESS

::==================================================================================================
:INITIALIZE
@echo off
call :SET_ERROR
setlocal enableextensions disabledelayedexpansion
if errorlevel 1 goto CANT_SWITCH_ON_SIMPLE_CMD_PROCESSING
set DP0$$=%~dp0
set P1$$=%~1
set P2$$=%~2
set P3$$=%~3
set P4$$=%~4
set P5$$=%~5
set P6$$=%~6
set P7$$=%~7
set P8$$=%~8
set P9$$=%~9
call :SET_ERROR
setlocal enableextensions enabledelayedexpansion
if errorlevel 1 goto CANT_SWITCH_ON_EXTENDED_CMD_PROCESSING
set is_nested_call$$=0
set initial_cd$$=!CD!
goto BEGIN
::==================================================================================================
:CANT_SWITCH_ON_SIMPLE_CMD_PROCESSING
echo.
echo ## Can not switch on simple command processing (without delayed expansion).
goto TERMINATED
:CANT_SWITCH_ON_EXTENDED_CMD_PROCESSING
echo.
echo ## Can not switch on extended command processing.
goto TERMINATED
::--------------------------------------------------------------------------------------------------
rem :
rem echo.
rem echo ## 
rem goto TERMINATED
::--------------------------------------------------------------------------------------------------
:TERMINATED
echo ## CMD-execution is terminated (in "%~dpnx0").
echo 
pause
EXIT 255
::==================================================================================================
:RESET_ERROR
set errorlevel=0
set errorlevel=
goto :EOF
:SET_ERROR
verify # 2>nul
goto :EOF
::==================================================================================================
:RETURN_SUCCESS
set errorlevel=0
set errorlevel=
goto :EOF
:RETURN_ERROR
verify # 2>nul
goto :EOF
:END_LOCAL_RETURN_SUCCESS
endlocal
goto RETURN_SUCCESS
:END_LOCAL_RETURN_ERROR
endlocal
goto RETURN_ERROR
::==================================================================================================
:FINISH
if !is_nested_call$$!==0 if not "!$cmd_plain!"=="1" (
echo.
pause )
endlocal
endlocal
goto RETURN_SUCCESS
:ERROR
if !is_nested_call$$!==0 (
echo 
if not "%$cmd_plain%"=="1" pause )
endlocal
endlocal
goto RETURN_ERROR
::==================================================================================================
