commit 9a4982ec0e325dd8739f52391269d1abc2118754
parent 22695f464bf622700f49f26d1986d130259ac55a
Author: earthlng <earthlng@users.noreply.github.com>
Date: Wed, 29 Nov 2017 23:23:57 +0100
updater.bat v3.0 FINAL
THE REAL FUCKING DEAL this time - finally! THANKS @claustromaniac !!
Diffstat:
| M | updater.bat | | | 103 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ |
1 file changed, 72 insertions(+), 31 deletions(-)
diff --git a/updater.bat b/updater.bat
@@ -28,10 +28,48 @@ IF /I "%~1"=="-multioverrides" (
IF /I "%~1"=="-merge" (
SET _merge=1
)
+IF /I "%~1"=="-updatebatch" (
+ SET _updateb=1
+)
SHIFT
GOTO parse
:endparse
ECHO.
+IF DEFINED _updateb (
+ IF NOT "!_myname:~0,9!"=="[updated]" (
+ ECHO Checking updater version...
+ ECHO.
+ IF EXIST "[updated]!_myname!.bat" ( DEL /F "[updated]!_myname!.bat" )
+ REM Uncomment the next line and comment the powershell call for testing.
+ REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
+ (
+ powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/ghacksuserjs/ghacks-user.js/raw/master/updater.bat', '[updated]!_myname!.bat')"
+ ) >nul 2>&1
+ IF EXIST "[updated]!_myname!.bat" (
+ START CMD /C "[updated]!_myname!.bat" !_myparams!
+ EXIT /B
+ ) ELSE (
+ ECHO Failed. Make sure PowerShell is allowed internet access.
+ ECHO.
+ TIMEOUT 300
+ EXIT /B
+ )
+ ) ELSE (
+ IF EXIST "!_myname:~9!.bat" (
+ REN "!_myname:~9!.bat" "!_myname:~9!.old"
+ CALL :begin
+ REN "!_myname!.bat" "!_myname:~9!.bat"
+ DEL /F "!_myname:~9!.old"
+ EXIT /B
+ ) ELSE (
+ ECHO.
+ ECHO The [updated] label is reserved. Do not run an [updated] script directly, or rename it to something else before you run it.
+ TIMEOUT 300
+ EXIT /B
+ )
+ )
+)
+:begin
SET /A "_line=0"
IF NOT EXIST user.js (
ECHO user.js not detected in the current directory.
@@ -93,7 +131,9 @@ IF EXIST user.js (
ECHO.
)
ECHO Retrieving latest user.js file from github repository...
-powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/ghacksuserjs/ghacks-user.js/raw/master/user.js', 'user.js')" >nul
+(
+ powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/ghacksuserjs/ghacks-user.js/raw/master/user.js', 'user.js')"
+) >nul 2>&1
ECHO.
IF EXIST user.js (
IF DEFINED _multi (
@@ -106,8 +146,8 @@ IF EXIST user.js (
ECHO.
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
- CALL :merge temp2 user.js
+ COPY /B /V /Y user.js+user-overrides-merged.js updatertempfile
+ CALL :merge updatertempfile user.js
) ELSE (
ECHO.
ECHO Appending...
@@ -120,8 +160,8 @@ IF EXIST user.js (
IF EXIST "user-overrides.js" (
IF DEFINED _merge (
ECHO Merging user-overrides.js...
- COPY /B /V /Y user.js+user-overrides.js temp2
- CALL :merge temp2 user.js
+ COPY /B /V /Y user.js+user-overrides.js updatertempfile
+ CALL :merge updatertempfile user.js
) ELSE (
ECHO Appending user-overrides.js...
ECHO.
@@ -168,39 +208,40 @@ 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"
+(
+ 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!" updatertempfile1 >nul 2>&1
+ IF ERRORLEVEL 1 (
+ FOR /F "tokens=* delims=" %%X IN ('FIND /I "!_pref!" %~1') DO (
+ SET "_temp=%%X"
+ SET "_temp=!_temp: =!"
+ IF /I "user_pref"=="!_temp:~0,9!" (
+ SET "_pref=%%X"
+ )
)
+ ECHO(!_pref!
+ ECHO(!_pref!>>updatertempfile1
)
- ECHO(!_pref!>>%~2
+ ) ELSE (
+ ECHO(!_pref!
)
) ELSE (
- ECHO(!_pref!>>%~2
+ ECHO(!_pref!
)
- ) ELSE (
- ECHO(!_pref!>>%~2
+ ENDLOCAL
)
- ENDLOCAL
-)
+)>%~2
ENDLOCAL
-DEL /F %~1 temp123 >nul
+DEL /F %1 updatertempfile1 >nul
GOTO :EOF
REM ############################