143 lines
3.8 KiB
Batchfile
143 lines
3.8 KiB
Batchfile
|
@rem Name: Submit_new_public_files.cmd
|
||
|
@rem
|
||
|
@rem Usage: Submit_new_public_files.cmd Delete|Add
|
||
|
@rem
|
||
|
@rem Purpose: This is the script that adds new files and deletes old files
|
||
|
@rem for the public directories in the build.
|
||
|
@rem
|
||
|
@rem The script is driven off the %RazzleToolPath%\public_changes.txt.
|
||
|
@rem See that file for more info.
|
||
|
|
||
|
@if "%_echo%"=="" echo off
|
||
|
setlocal
|
||
|
|
||
|
if "%BUILD_OFFLINE%"=="1" goto :eof
|
||
|
|
||
|
set __DO_ADDS=
|
||
|
set __DO_DELETES=
|
||
|
|
||
|
if /i "%1" == "" (
|
||
|
set __DO_ADDS=1
|
||
|
set __DO_DELETES=1
|
||
|
)
|
||
|
|
||
|
if /i "%1" == "delete" (
|
||
|
set __DO_DELETES=1
|
||
|
)
|
||
|
|
||
|
if /i "%1" == "add" (
|
||
|
set __DO_ADDS=1
|
||
|
)
|
||
|
|
||
|
@rem
|
||
|
@rem Build up the list of files we should checkin.
|
||
|
@rem
|
||
|
|
||
|
set _Submit_Rules_AddDel=%temp%\SubmitRulesAddDel%RANDOM%
|
||
|
set _SD_results=%temp%\SubmitRulesAddDel2%RANDOM%
|
||
|
set _AddList=%temp%\AddList%RANDOM%
|
||
|
set _DelList=%temp%\DelList%RANDOM%
|
||
|
set _tmp1=%temp%\AddDelTemp1_%RANDOM%
|
||
|
set _tmp2=%temp%\AddDelTemp2_%RANDOM%
|
||
|
|
||
|
if "%_BUILDARCH%" == "x86" set _LIBARCH=i386&& goto LibArchSet
|
||
|
set _LIBARCH=%_BUILDARCH%
|
||
|
:LibArchSet
|
||
|
|
||
|
@rem First eliminate comments
|
||
|
set ConvertMacro={s/\;.*//g
|
||
|
|
||
|
@rem Then replace * with the appropriate architecture and remove extra spaces.
|
||
|
set ConvertMacro=%ConvertMacro%;s/\*/%_LIBARCH%/;s/\,[ \t]*/\,/g
|
||
|
|
||
|
@rem and print out the results if non-zero.
|
||
|
set ConvertMacro=%ConvertMacro%;if (length gt 1) {print $_;}}
|
||
|
|
||
|
perl -e "while (<>) %ConvertMacro%" < %RazzleToolPath%\PublicChanges.txt > %_Submit_Rules_AddDel%
|
||
|
|
||
|
@rem
|
||
|
@rem Verify that there's the correct number of columns in the output file.
|
||
|
@rem
|
||
|
|
||
|
for /f "tokens=1-4 delims=," %%i in (%_Submit_Rules_AddDel%) do (
|
||
|
@if "%%l" == "" (
|
||
|
echo BUILDMSG: Error: %RazzleToolPath%\PublicChanges.txt ^(%%i,%%j,%%k,%%l^) is malformed - forget a comma?
|
||
|
)
|
||
|
)
|
||
|
|
||
|
@rem
|
||
|
@rem do the work.
|
||
|
@rem
|
||
|
|
||
|
pushd %_NTDRIVE%%_NTROOT%\public
|
||
|
|
||
|
@rem
|
||
|
@rem public_AddDel.log will be appended to the checkin report. Don't delete when done.
|
||
|
@rem
|
||
|
|
||
|
if not exist %_NTDRIVE%%_NTROOT%\public\PUBLIC_CHANGENUM.SD (
|
||
|
echo.
|
||
|
echo BUILDMSG: Error: %_NTDRIVE%%_NTROOT%\public\PUBLIC_CHANGENUM.SD is missing.
|
||
|
echo BUILDMSG: Error: Open a new razzle window and redo your build.
|
||
|
echo.
|
||
|
goto TheEnd
|
||
|
)
|
||
|
|
||
|
for /f "tokens=2" %%x in (PUBLIC_CHANGENUM.SD) do (
|
||
|
set _PublicChangeNum=%%x
|
||
|
)
|
||
|
|
||
|
@rem
|
||
|
@rem Now query SD and see if it knows about this file already.
|
||
|
@rem
|
||
|
@rem In the case of an add operation, we check to see if the file's not known
|
||
|
@rem (ie: "sd files filename" reports "no such file"). This is a clear case
|
||
|
@rem for an add (file never existed before). So is "delete change(some number)"
|
||
|
@rem since this indicates the file was deleted sometime in the past and we
|
||
|
@rem want to add it back.
|
||
|
@rem
|
||
|
@rem In the case of a delete, the exact inverse is true. If the file doesn't exist
|
||
|
@rem or has already been deleted, there's nothing to delete. Otherwise, it needs
|
||
|
@rem to be added to the delete list.
|
||
|
@rem
|
||
|
|
||
|
for /f "tokens=1,2,3,4 delims=," %%i in (%_Submit_Rules_AddDel%) do (
|
||
|
@if defined __DO_ADDS (
|
||
|
@if "%%j" == "add" (
|
||
|
@if exist %%i (
|
||
|
echo %%i>> %_AddList%
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
if defined __DO_DELETES (
|
||
|
if "%%j" == "del" (
|
||
|
echo %%i>> %_DelList%
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
|
||
|
if exist %_AddList% (
|
||
|
sd -s -x %_AddList% files > %_tmp1%
|
||
|
findstr /c:"no such file" %_tmp1% > %_tmp2%
|
||
|
findstr /c:"delete change" %_tmp1% >> %_tmp2%
|
||
|
for /f "tokens=2 delims=# " %%i in (%_tmp2%) do sd add -c %_PublicChangeNum% %%i
|
||
|
del %_tmp1%
|
||
|
del %_tmp2%
|
||
|
del %_AddList%
|
||
|
)
|
||
|
|
||
|
if exist %_DelList% (
|
||
|
sd -s -x %_DelList% files > %_tmp1%
|
||
|
findstr /v /c:"no such file" %_tmp1% | findstr /v /c:"delete change" | findstr /v /c:"exit:" > %_tmp2%
|
||
|
for /f "tokens=2 delims=# " %%i in (%_tmp2%) do sd delete -c %_PublicChangeNum% %%i
|
||
|
del %_tmp1%
|
||
|
del %_tmp2%
|
||
|
del %_DelList%
|
||
|
)
|
||
|
|
||
|
:TheEnd
|
||
|
if exist %_Submit_Rules_AddDel% del %_Submit_Rules_AddDel%
|
||
|
if exist %_SD_results% del %_SD_results%
|
||
|
popd
|
||
|
endlocal
|