From fc2075e37c0dfcca758a6c2c3dbede23ece53e61 Mon Sep 17 00:00:00 2001 From: claustromaniac <20734810+claustromaniac@users.noreply.github.com> Date: Mon, 27 Nov 2017 16:05:20 +0000 Subject: [PATCH] Merge-second attempt --- updater.bat | 96 ++++++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/updater.bat b/updater.bat index e4e8410..5eb2376 100644 --- a/updater.bat +++ b/updater.bat @@ -3,7 +3,7 @@ TITLE ghacks user.js updater REM ### ghacks-user.js updater for Windows REM ## author: @claustromaniac -REM ## version: 3.0 +REM ## version: 3.0-alpha92 SET _myname=%~n0 SET _myparams=%* @@ -28,6 +28,7 @@ IF /I "%~1"=="-multioverrides" ( IF /I "%~1"=="-merge" ( SET _merge=1 ) +REM case-sensitive check because we need to strip it from params IF "%~1"=="-updatebatch" ( SET _updateb=1 ) @@ -59,40 +60,6 @@ IF DEFINED _updateb ( ) ) GOTO begin -REM ###### Merge function ###### -:merge -DEL /F %2 2>nul -FOR /F "tokens=* delims=" %%G IN (%1) DO ( - SET _pref=%%G - SET "_temp=!_pref: =!" - IF /I "!_temp!"=="!_temp:user.js.parrot=!" ( - IF /I "user"=="!_temp:~0,4!" ( - FOR /F "delims=," %%S IN ("!_pref!") DO ( - SET _pref=%%S - ) - SET _pref=!_pref:"=""! - FIND /I "!_pref!" %2 >nul 2>&1 - IF ERRORLEVEL 1 ( - FIND /I "!_pref!" %1 >temp1 - FOR /F "tokens=* delims=" %%X IN (temp1) DO ( - SET _temp=%%X - SET "_temp=!_temp: =!" - IF /I "user"=="!_temp:~0,4!" ( - SET _pref=%%X - ) - ) - ECHO !_pref!>>%2 - ) - ) ELSE ( - ECHO !_pref!>>%2 - ) - ) ELSE ( - ECHO !_pref!>>%2 - ) -) -DEL /F %1 temp1 2>nul -EXIT /B -REM ############################ :begin SET /A "_line=0" IF NOT EXIST user.js ( @@ -116,7 +83,7 @@ IF NOT EXIST user.js ( :exitloop IF !_line! GEQ 4 ( IF /I NOT "!_name!"=="!_name:ghacks=X!" ( - ECHO ghacks user.js !_version:*version=version!,!_date! + ECHO ghacks user.js !_version:~2!,!_date! ) ELSE ( ECHO Current user.js version not recognised. ) @@ -132,9 +99,7 @@ IF NOT DEFINED _ua ( REM ECHO Visit the wiki for more detailed information. REM ECHO. CHOICE /M "Continue" - IF ERRORLEVEL 2 ( - EXIT /B - ) + IF ERRORLEVEL 2 EXIT /B ) CLS ECHO. @@ -151,7 +116,7 @@ IF DEFINED _log ( ECHO. ) IF EXIST user.js ( - REN user.js.bak user.js.old.bak >nul 2>&1 + IF EXIST user.js.bak REN user.js.bak user.js.old.bak REN user.js user.js.bak ECHO Current user.js file backed up. ECHO. @@ -168,7 +133,6 @@ IF EXIST user.js ( ECHO. ECHO Merging... ECHO. - DEL /F user-overrides-merged.js temp2 2>nul COPY /B /V /Y user.js-overrides\*.js user-overrides CALL :merge user-overrides user-overrides-merged.js COPY /B /V /Y user.js+user-overrides-merged.js temp2 @@ -205,12 +169,12 @@ IF EXIST user.js ( ECHO. ECHO. IF "!changed!"=="true" ( - DEL /F user.js.old.bak 2>nul + IF EXIST user.js.old.bak DEL /F user.js.old.bak ECHO Update complete. ) ELSE ( IF "!changed!"=="false" ( DEL /F user.js.bak - REN user.js.old.bak user.js.bak >nul 2>&1 + IF EXIST user.js.old.bak REN user.js.old.bak user.js.bak ECHO Update completed without changes. ) ELSE ( ECHO Update complete. @@ -218,8 +182,8 @@ IF EXIST user.js ( ) ECHO. ) ELSE ( - REN user.js.bak user.js >nul 2>&1 - REN user.js.old.bak user.js.bak >nul 2>&1 + IF EXIST user.js.bak REN user.js.bak user.js + IF EXIST user.js.old.bak REN user.js.old.bak user.js.bak ECHO. ECHO Update failed. Make sure PowerShell is allowed internet access. ECHO. @@ -229,3 +193,45 @@ IF EXIST user.js ( IF NOT DEFINED _log ( IF NOT DEFINED _ua PAUSE ) +EXIT /B + +REM ###### Merge function ###### +:merge +DEL /F %2 2>nul +SETLOCAL disabledelayedexpansion +FOR /F "tokens=1,* delims=]" %%G IN ('find /n /v "" ^< "%~1"') DO ( + SET "_pref=%%H" + SETLOCAL enabledelayedexpansion + SET "_temp=!_pref: =!" + IF /I "user_pref"=="!_temp:~0,9!" ( + IF /I NOT "user.js.parrot"=="!_temp:~12,14!" ( + FOR /F "delims=," %%S IN ("!_pref!") DO ( + SET "_pref=%%S" + ) + SET _pref=!_pref:"=""! + FIND /I "!_pref!" %~2 >nul 2>&1 + IF ERRORLEVEL 1 ( + FIND /I "!_pref!" %~1 >temp123 + FOR /F "tokens=* delims=" %%X IN (temp123) DO ( + SET "_temp=%%X" + SET "_temp=!_temp: =!" + IF /I "user_pref"=="!_temp:~0,9!" ( + SET "_pref=%%X" + ) + ) + ECHO(!_pref!>>%~2 + ) + ) ELSE ( + ECHO(!_pref!>>%~2 + ) + ) ELSE ( + ECHO(!_pref!>>%~2 + ) + ENDLOCAL +) +ENDLOCAL +DEL /F %~1 temp123 >nul +GOTO EOF +REM ############################ + +:EOF