FruitBank/build_fruitbank.bat

127 lines
5.0 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
echo ==================================================
echo Build Script
echo Root: %CD%
echo ==================================================
echo.
echo Select project:
echo 1. FruitBank
echo.
set /p projChoice="Enter choice (1, default=1): "
if "%projChoice%"=="" set projChoice=1
if "%projChoice%"=="1" (
set PROJECT=FruitBank
) else (
set PROJECT=FruitBank
)
echo.
echo Select action:
echo 1. Build
echo 2. Clean and Build
echo 3. Clean
echo.
set /p actionChoice="Enter choice (1-3, default=1): "
if "%actionChoice%"=="" set actionChoice=1
if "%actionChoice%"=="1" set ACTION=Build
if "%actionChoice%"=="2" set ACTION=CleanBuild
if "%actionChoice%"=="3" set ACTION=Clean
echo.
echo Select build configuration:
echo 1. Debug
echo 2. Release
echo.
set /p configChoice="Enter choice (1 or 2, default=1): "
if "%configChoice%"=="2" (
set CONFIG=Release
) else (
set CONFIG=Debug
)
echo.
echo ==================================================
echo Project: %PROJECT%
echo Action: %ACTION%
echo Configuration: %CONFIG%
echo ==================================================
echo.
REM ===== CLEAN =====
if "%ACTION%"=="CleanBuild" goto :doClean
if "%ACTION%"=="Clean" goto :doClean
goto :skipClean
:doClean
echo Deleting bin and obj folders...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$proj='%PROJECT%'; $cfg='%CONFIG%'; $specialDirs=@('Aycode\Source\AyCode.Core','Aycode\Source\AyCode.Blazor'); $normalDirs=@('Mango\Source\NopCommerce.Common','Mango\Source\FruitBank','Mango\Source\FruitBankHybridApp'); foreach($d in $specialDirs) { if(Test-Path $d) { $p=\"$d\bin\$proj\$cfg\"; if(Test-Path $p){Remove-Item $p -Recurse -Force -EA SilentlyContinue; Write-Host \"Removed: $p\"} Get-ChildItem $d -Recurse -Directory -Force -EA SilentlyContinue | Where-Object {$_.Name -eq 'obj'} | ForEach-Object {Remove-Item $_.FullName -Recurse -Force -EA SilentlyContinue; Write-Host \"Removed: $($_.FullName)\"} } }; foreach($d in $normalDirs) { if(Test-Path $d) { $p=\"$d\bin\$cfg\"; if(Test-Path $p){Remove-Item $p -Recurse -Force -EA SilentlyContinue; Write-Host \"Removed: $p\"} Get-ChildItem $d -Recurse -Directory -Force -EA SilentlyContinue | Where-Object {$_.Name -eq 'obj'} | ForEach-Object {Remove-Item $_.FullName -Recurse -Force -EA SilentlyContinue; Write-Host \"Removed: $($_.FullName)\"} } }"
echo.
echo Running dotnet clean...
dotnet clean "Aycode\Source\AyCode.Core\AyCode.Core.sln" -c %CONFIG% -v q --nologo 2>nul
dotnet clean "Mango\Source\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\Mango.Nop.Core.csproj" -c %CONFIG% -v q --nologo 2>nul
dotnet clean "Mango\Source\FruitBankHybridApp\FruitBank.Common.Server\FruitBank.Common.Server.csproj" -c %CONFIG% -v q --nologo 2>nul
dotnet clean "Mango\Source\FruitBank\FruitBank.sln" -c %CONFIG% -v q --nologo 2>nul
dotnet clean "Mango\Source\FruitBankHybridApp\FruitBankHybrid.sln" -c %CONFIG% -v q --nologo 2>nul
if "%ACTION%"=="Clean" goto :success
:skipClean
REM ===== BUILD =====
echo.
echo Building projects...
REM AyCode.Core.sln - special rule: Release = Debug + Release build
if "%CONFIG%"=="Release" (
echo Building AyCode.Core.sln [Debug]...
dotnet build "Aycode\Source\AyCode.Core\AyCode.Core.sln" -c Debug --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
echo Building AyCode.Core.sln [Release]...
dotnet build "Aycode\Source\AyCode.Core\AyCode.Core.sln" -c Release --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
) else (
echo Building AyCode.Core.sln [%CONFIG%]...
dotnet build "Aycode\Source\AyCode.Core\AyCode.Core.sln" -c %CONFIG% --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
)
echo Building Mango.Nop.Core.csproj [%CONFIG%]...
dotnet build "Mango\Source\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\Mango.Nop.Core.csproj" -c %CONFIG% --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
echo Building FruitBank.Common.Server.csproj [%CONFIG%]...
dotnet build "Mango\Source\FruitBankHybridApp\FruitBank.Common.Server\FruitBank.Common.Server.csproj" -c %CONFIG% --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
echo Building FruitBank.sln [%CONFIG%]...
dotnet build "Mango\Source\FruitBank\FruitBank.sln" -c %CONFIG% --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
echo Building FruitBankHybrid.sln [%CONFIG%]...
dotnet build "Mango\Source\FruitBankHybridApp\FruitBankHybrid.sln" -c %CONFIG% --nologo -v m /p:WarningLevel=0 /clp:ErrorsOnly
if %ERRORLEVEL% neq 0 goto :error
:success
echo.
echo ==================================================
echo %ACTION% completed successfully (%PROJECT% - %CONFIG%).
echo ==================================================
pause
exit /b 0
:error
echo.
echo ==================================================
echo BUILD FAILED with exit code %ERRORLEVEL%.
echo ==================================================
pause
exit /b %ERRORLEVEL%