-echo Running clean.cmd
-
-set bin=false
-set packages=false
-set tools = false
-
-if [%1]==[] (
- set bin=true
- set packages=true
- set tools=true
- goto Begin
-)
-
-:Loop
-if [%1]==[] goto Begin
-
-if /I [%1] == [/?] goto Usage
-if /I [%1] == [/help] goto Usage
-
-if /I [%1] == [/p] (
- set packages=true
- set thisArgs=!thisArgs!%1
- goto Next
-)
-
-if /I [%1] == [/b] (
- set bin=true
- set thisArgs=!thisArgs!%1
- goto Next
-)
-
-if /I [%1] == [/t] (
- set tools=true
- set thisArgs=!thisArgs!%1
- goto Next
-)
-
-if /I [%1] == [/all] (
- set tools=true
- set bin=true
- set packages=true
- goto Begin
-)
-
-:Next
-shift /1
-goto Loop
-
-:Begin
-:: Set __ProjectDir to be the directory of this script
-set "__ProjectDir=%~dp0"
-:: remove trailing slash
-if %__ProjectDir:~-1%==\ set "__ProjectDir=%__ProjectDir:~0,-1%"
-set "__RootBinDir=%__ProjectDir%\bin"
-
-if [%bin%] == [true] (
- if exist "%__RootBinDir%" (
- echo Deleting bin directory
- rd /s /q "%__RootBinDir%"
- if NOT [!ERRORLEVEL!]==[0] (
- echo ERROR: An error occurred while deleting the bin directory - error code is !ERRORLEVEL!
- exit /b 1
- )
- )
-)
-
-if [%tools%] == [true] (
- if exist "%__ProjectDir%\Tools" (
- echo Deleting tools directory
- rd /s /q "%__ProjectDir%\Tools"
- if NOT [!ERRORLEVEL!]==[0] (
- echo ERROR: An error occurred while deleting the Tools directory - error code is !ERRORLEVEL!
- exit /b 1
- )
- )
-)
-
-if [%packages%] == [true] (
- if exist "%__ProjectDir%\packages" (
- echo Deleting packages directory
- rd /s /q "%__ProjectDir%\packages"
- if NOT [!ERRORLEVEL!]==[0] (
- echo ERROR: An error occurred while deleting the packages directory - error code is !ERRORLEVEL!
- exit /b 1
- )
- )
-)
-
-echo Clean was successful
-exit /b 0
+set NO_DASHES_ARG=%1
+if not defined NO_DASHES_ARG goto no_help
+if /I [%NO_DASHES_ARG:-=%] == [?] goto Usage
+if /I [%NO_DASHES_ARG:-=%] == [h] goto Usage
+
+:no_help
+:: Check if VBCSCompiler.exe is running
+tasklist /fi "imagename eq VBCSCompiler.exe" |find ":" > nul
+:: Compiler is running if errorlevel == 1
+if errorlevel 1 (
+ echo Stop VBCSCompiler.exe execution.
+ for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq VBCSCompiler.exe" /fo csv') do taskkill /f /PID %%~F
+)
+
+:: Strip all dashes off the argument and use invariant
+:: compare to match as many versions of "all" that we can
+:: All other argument validation happens inside Run.exe
+if not defined NO_DASHES_ARG goto no_args
+if /I [%NO_DASHES_ARG:-=%] == [all] (
+ echo Cleaning entire working directory ...
+ call git clean -xdf
+ exit /b !ERRORLEVEL!
+)
+
+:no_args
+if [%1]==[] set __args=/t:CleanAllProjects
+if [%1]==[-b] set __args=/t:CleanAllProjects
+if [%1]==[-p] set __args=/t:CleanPackages
+if [%1]==[-c] set __args=/t:CleanPackagesCache
+call %~dp0dotnet.cmd msbuild /nologo /verbosity:minimal /clp:Summary /nodeReuse:false /flp:v=normal;LogFile=clean.log %__args%
+exit /b %ERRORLEVEL%