Add files via upload (#474)

This commit is contained in:
earthlng 2018-08-06 23:33:06 +00:00 committed by GitHub
parent 9c975b318a
commit c4d131aaf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,265 +1,263 @@
@ECHO OFF & SETLOCAL EnableDelayedExpansion @ECHO OFF & SETLOCAL EnableDelayedExpansion
TITLE ghacks user.js updater TITLE ghacks user.js updater
REM ## ghacks-user.js updater for Windows REM ## ghacks-user.js updater for Windows
REM ## author: @claustromaniac REM ## author: @claustromaniac
REM ## version: 4.5 REM ## version: 4.5
REM ## instructions: https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts REM ## instructions: https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts
SET _myname=%~n0 SET _myname=%~n0
SET _myparams=%* SET _myparams=%*
:parse :parse
IF "%~1"=="" (GOTO endparse) IF "%~1"=="" (GOTO endparse)
IF /I "%~1"=="-unattended" (SET _ua=1) IF /I "%~1"=="-unattended" (SET _ua=1)
IF /I "%~1"=="-log" (SET _log=1) IF /I "%~1"=="-log" (SET _log=1)
IF /I "%~1"=="-logp" (SET _log=1 & SET _logp=1) IF /I "%~1"=="-logp" (SET _log=1 & SET _logp=1)
IF /I "%~1"=="-multioverrides" (SET _multi=1) IF /I "%~1"=="-multioverrides" (SET _multi=1)
IF /I "%~1"=="-merge" (SET _merge=1) IF /I "%~1"=="-merge" (SET _merge=1)
IF /I "%~1"=="-updatebatch" (SET _updateb=1) IF /I "%~1"=="-updatebatch" (SET _updateb=1)
IF /I "%~1"=="-singlebackup" (SET _singlebackup=1) IF /I "%~1"=="-singlebackup" (SET _singlebackup=1)
SHIFT SHIFT
GOTO parse GOTO parse
:endparse :endparse
IF DEFINED _updateb ( IF DEFINED _updateb (
REM The normal flow here goes from phase 1 to phase 2 and then phase 3. REM The normal flow here goes from phase 1 to phase 2 and then phase 3.
IF NOT "!_myname:~0,9!"=="[updated]" ( IF NOT "!_myname:~0,9!"=="[updated]" (
IF EXIST "[updated]!_myname!.bat" ( IF EXIST "[updated]!_myname!.bat" (
REM ## Phase 3 ##: The new script, with the original name, will: REM ## Phase 3 ##: The new script, with the original name, will:
REM * Delete the [updated]*.bat script REM * Delete the [updated]*.bat script
REM * Begin the normal routine REM * Begin the normal routine
REN "[updated]!_myname!.bat" "[updated]!_myname!.bat.old" REN "[updated]!_myname!.bat" "[updated]!_myname!.bat.old"
DEL /F "[updated]!_myname!.bat.old" DEL /F "[updated]!_myname!.bat.old"
CALL :message "Script updated^!" CALL :message "Script updated^!"
TIMEOUT 3 >nul TIMEOUT 3 >nul
GOTO begin GOTO begin
) )
REM ## Phase 1 ## REM ## Phase 1 ##
REM * Download new batch and name it [updated]*.bat REM * Download new batch and name it [updated]*.bat
REM * Start that script in a new CMD window REM * Start that script in a new CMD window
REM * Exit REM * Exit
CALL :message "Updating script..." CALL :message "Updating script..."
REM Uncomment the next line and comment the powershell call for testing. REM Uncomment the next line and comment the powershell call for testing.
REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat" REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
( (
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.bat', '[updated]!_myname!.bat')" powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.bat', '[updated]!_myname!.bat')"
) >nul 2>&1 ) >nul 2>&1
IF EXIST "[updated]!_myname!.bat" ( IF EXIST "[updated]!_myname!.bat" (
START /min CMD /C "[updated]!_myname!.bat" !_myparams! START /min CMD /C "[updated]!_myname!.bat" !_myparams!
) ELSE ( ) ELSE (
CALL :message "Failed. Make sure PowerShell is allowed internet access." CALL :message "Failed. Make sure PowerShell is allowed internet access."
TIMEOUT 120 >nul TIMEOUT 120 >nul
) )
) ELSE ( ) ELSE (
IF "!_myname!"=="[updated]" ( IF "!_myname!"=="[updated]" (
CALL :message "The [updated] label is reserved. Rename this script and try again." CALL :message "The [updated] label is reserved. Rename this script and try again."
TIMEOUT 300 >nul TIMEOUT 300 >nul
) ELSE ( ) ELSE (
REM ## Phase 2 ##: The [updated]*.bat script will: REM ## Phase 2 ##: The [updated]*.bat script will:
REM * Copy itself overwriting the original batch REM * Copy itself overwriting the original batch
REM * Start that script in a new CMD instance REM * Start that script in a new CMD instance
REM * Exit REM * Exit
IF EXIST "!_myname:~9!.bat" ( IF EXIST "!_myname:~9!.bat" (
REN "!_myname:~9!.bat" "!_myname:~9!.bat.old" REN "!_myname:~9!.bat" "!_myname:~9!.bat.old"
DEL /F "!_myname:~9!.bat.old" DEL /F "!_myname:~9!.bat.old"
) )
COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat" COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat"
START CMD /C "!_myname:~9!.bat" !_myparams! START CMD /C "!_myname:~9!.bat" !_myparams!
) )
) )
EXIT /B EXIT /B
) )
:begin :begin
CLS CLS
ECHO: ECHO:
ECHO: ECHO:
ECHO: ######################################## ECHO: ########################################
ECHO: #### user.js Updater for Windows #### ECHO: #### user.js Updater for Windows ####
ECHO: #### by claustromaniac #### ECHO: #### by claustromaniac ####
ECHO: #### v4.5 #### ECHO: #### v4.5 ####
ECHO: ######################################## ECHO: ########################################
ECHO: ECHO:
SET /A "_line=0" SET /A "_line=0"
IF NOT EXIST user.js ( IF NOT EXIST user.js (
CALL :message "user.js not detected in the current directory." CALL :message "user.js not detected in the current directory."
) ELSE ( ) ELSE (
FOR /F "skip=1 tokens=1,* delims=:" %%G IN (user.js) DO ( FOR /F "skip=1 tokens=1,* delims=:" %%G IN (user.js) DO (
SET /A "_line+=1" SET /A "_line+=1"
IF !_line! GEQ 4 (GOTO exitloop) IF !_line! GEQ 4 (GOTO exitloop)
IF !_line! EQU 1 (SET _name=%%H) IF !_line! EQU 1 (SET _name=%%H)
IF !_line! EQU 2 (SET _date=%%H) IF !_line! EQU 2 (SET _date=%%H)
IF !_line! EQU 3 (SET _version=%%G) IF !_line! EQU 3 (SET _version=%%G)
) )
:exitloop :exitloop
IF NOT "!_name!"=="" ( IF NOT "!_name!"=="" (
IF /I NOT "!_name!"=="!_name:ghacks=!" ( IF /I NOT "!_name!"=="!_name:ghacks=!" (
CALL :message "!_name! !_version:~2!,!_date!" CALL :message "!_name! !_version:~2!,!_date!"
) ELSE (CALL :message "Current user.js version not recognised.") ) ELSE (CALL :message "Current user.js version not recognised.")
) ELSE (CALL :message "Current user.js version not recognised.") ) ELSE (CALL :message "Current user.js version not recognised.")
) )
ECHO: ECHO:
IF NOT DEFINED _ua ( IF NOT DEFINED _ua (
CALL :message "This batch should be run from your Firefox profile directory." CALL :message "This batch should be run from your Firefox profile directory."
ECHO: It will download the latest version of ghacks user.js from github and then ECHO: It will download the latest version of ghacks user.js from github and then
CALL :message "append any of your own changes from user-overrides.js to it." CALL :message "append any of your own changes from user-overrides.js to it."
CALL :message "Visit the wiki for more detailed information." CALL :message "Visit the wiki for more detailed information."
ECHO: ECHO:
TIMEOUT 1 /nobreak >nul TIMEOUT 1 /nobreak >nul
CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]" CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]"
CLS CLS
IF ERRORLEVEL 3 (EXIT /B) IF ERRORLEVEL 3 (EXIT /B)
IF ERRORLEVEL 2 (GOTO :showhelp) IF ERRORLEVEL 2 (GOTO :showhelp)
) )
IF DEFINED _log ( IF DEFINED _log (
CALL :log >>user.js-update-log.txt 2>&1 CALL :log >>user.js-update-log.txt 2>&1
IF DEFINED _logp (START user.js-update-log.txt) IF DEFINED _logp (START user.js-update-log.txt)
EXIT /B EXIT /B
:log :log
SET _log=2 SET _log=2
ECHO:################################################################## ECHO:##################################################################
ECHO: %date%, %time% ECHO: %date%, %time%
) )
IF EXIST user.js.new (DEL /F "user.js.new") IF EXIST user.js.new (DEL /F "user.js.new")
CALL :message "Retrieving latest user.js file from github repository..." CALL :message "Retrieving latest user.js file from github repository..."
( (
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js', 'user.js.new')" powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js', 'user.js.new')"
) >nul 2>&1 ) >nul 2>&1
IF EXIST user.js.new ( IF EXIST user.js.new (
IF DEFINED _multi ( IF DEFINED _multi (
FORFILES /P user.js-overrides /M *.js >nul 2>&1 FORFILES /P user.js-overrides /M *.js >nul 2>&1
IF NOT ERRORLEVEL 1 ( IF NOT ERRORLEVEL 1 (
IF DEFINED _merge ( IF DEFINED _merge (
CALL :message "Merging..." CALL :message "Merging..."
COPY /B /V /Y user.js-overrides\*.js user-overrides-merged.js COPY /B /V /Y user.js-overrides\*.js user-overrides-merged.js
CALL :merge user-overrides-merged.js CALL :merge user-overrides-merged.js
COPY /B /V /Y user.js.new+user-overrides-merged.js user.js.new COPY /B /V /Y user.js.new+user-overrides-merged.js user.js.new
CALL :merge user.js.new CALL :merge user.js.new
) ELSE ( ) ELSE (
CALL :message "Appending..." CALL :message "Appending..."
COPY /B /V /Y user.js.new+"user.js-overrides\*.js" user.js.new COPY /B /V /Y user.js.new+"user.js-overrides\*.js" user.js.new
) )
) ELSE (CALL :message "No override files found.") ) ELSE (CALL :message "No override files found.")
) ELSE ( ) ELSE (
IF EXIST "user-overrides.js" ( IF EXIST "user-overrides.js" (
COPY /B /V /Y user.js.new+"user-overrides.js" "user.js.new" COPY /B /V /Y user.js.new+"user-overrides.js" "user.js.new"
IF DEFINED _merge ( IF DEFINED _merge (
CALL :message "Merging user-overrides.js..." CALL :message "Merging user-overrides.js..."
CALL :merge user.js.new CALL :merge user.js.new
) ELSE ( ) ELSE (
CALL :message "user-overrides.js appended." CALL :message "user-overrides.js appended."
) )
) ELSE (CALL :message "user-overrides.js not found.") ) ELSE (CALL :message "user-overrides.js not found.")
) )
IF EXIST user.js ( IF EXIST user.js (
FC user.js.new user.js >nul && SET "_changed=false" || SET "_changed=true" FC user.js.new user.js >nul && SET "_changed=false" || SET "_changed=true"
) )
IF "!_changed!"=="true" ( IF "!_changed!"=="true" (
CALL :message "Backing up..." CALL :message "Backing up..."
IF DEFINED _singlebackup ( IF DEFINED _singlebackup (
MOVE /Y user.js user.js.bak >nul MOVE /Y user.js user.js.bak >nul
) ELSE ( ) ELSE (
SET "_time=!time: =0!" SET "_time=!time: =0!"
MOVE /Y user.js "user-backup-!date:/=-!_!_time::=.!.js" >nul MOVE /Y user.js "user-backup-!date:/=-!_!_time::=.!.js" >nul
) )
REN user.js.new user.js REN user.js.new user.js
CALL :message "Update complete." CALL :message "Update complete."
) ELSE ( ) ELSE (
IF "!_changed!"=="false" ( IF "!_changed!"=="false" (
DEL /F user.js.new >nul DEL /F user.js.new >nul
CALL :message "Update completed without changes." CALL :message "Update completed without changes."
) ELSE ( ) ELSE (
REN user.js.new user.js REN user.js.new user.js
CALL :message "Update complete." CALL :message "Update complete."
) )
) )
) ELSE ( ) ELSE (
CALL :message "Update failed. Make sure PowerShell is allowed internet access." CALL :message "Update failed. Make sure PowerShell is allowed internet access."
ECHO: No changes were made. ECHO: No changes were made.
) )
IF NOT DEFINED _log ( IF NOT DEFINED _log (
IF NOT DEFINED _ua (PAUSE) IF NOT DEFINED _ua (PAUSE)
) )
EXIT /B EXIT /B
REM ########### Message Function ########### REM ########### Message Function ###########
:message :message
SETLOCAL DisableDelayedExpansion SETLOCAL DisableDelayedExpansion
IF NOT "2"=="%_log%" (ECHO:) IF NOT "2"=="%_log%" (ECHO:)
ECHO: %~1 ECHO: %~1
IF NOT "2"=="%_log%" (ECHO:) IF NOT "2"=="%_log%" (ECHO:)
ENDLOCAL ENDLOCAL
GOTO :EOF GOTO :EOF
REM ############ Merge function ############ REM ############ Merge function ############
:merge :merge
SETLOCAL DisableDelayedExpansion SETLOCAL DisableDelayedExpansion
FOR /F tokens^=2^,^*^ delims^=^'^" %%G IN ('FINDSTR /R /C:"^user_pref[ ]*\([ ]*[\"'].*[\"'][ ]*,.*\)[ ]*;" "%~1"') DO (SET "[%%G]=%%H") FOR /F tokens^=2^,^*^ delims^=^'^" %%G IN ('FINDSTR /R /C:"^user_pref[ ]*\([ ]*[\"'].*[\"'][ ]*,.*\)[ ]*;" "%~1"') DO (SET "[%%G]=%%H")
FOR /F tokens^=2^,^*^ delims^=^' %%G IN ('FINDSTR /R /C:"^//// --- comment-out --- '[^'][^']*'.*" "%~1"') DO (SET "__unset__%%G=1")
FOR /F tokens^=2^,^*^ delims^=^' %%G IN ('FINDSTR /R /C:"^//// --- comment-out --- '[^'][^']*'.*" "%~1"') DO (SET "__unset__%%G=1") (
( FOR /F "tokens=1,* delims=:" %%I IN ('FINDSTR /N "^" "%~1"') DO (
FOR /F "tokens=1,* delims=:" %%I IN ('FINDSTR /N "^" "%~1"') DO ( SET "_temp=%%J"
SET "_temp=%%J" SETLOCAL EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion IF NOT "!_temp:~0,9!"=="user_pref" (
IF NOT "!_temp:~0,9!"=="user_pref" ( ENDLOCAL & ECHO:%%J
ENDLOCAL & ECHO:%%J ) ELSE (
) ELSE ( IF "!_temp:;=!"=="!_temp!" (
IF "!_temp:;=!"=="!_temp!" ( ENDLOCAL & ECHO:%%J
ENDLOCAL & ECHO:%%J ) ELSE (
) ELSE ( ENDLOCAL
ENDLOCAL FOR /F tokens^=2^ delims^=^'^" %%K IN ("%%J") DO (
FOR /F tokens^=2^ delims^=^'^" %%K IN ("%%J") DO ( IF NOT "_user.js.parrot"=="%%K" (
IF DEFINED __unset__%%K (
IF NOT "_user.js.parrot"=="%%K" ( ECHO://%%J
IF DEFINED __unset__%%K ( ) ELSE (
ECHO://%%J IF DEFINED [%%K] (
) ELSE ( SETLOCAL EnableDelayedExpansion
IF DEFINED [%%K] ( FOR /F "delims=" %%L IN ("![%%K]!") DO (
SETLOCAL EnableDelayedExpansion ENDLOCAL & ECHO:user_pref("%%K"%%L
FOR /F "delims=" %%L IN ("![%%K]!") DO ( SET "[%%K]="
ENDLOCAL & ECHO:user_pref("%%K"%%L )
SET "[%%K]=" )
) )
) ) ELSE (ECHO:%%J)
) )
) ELSE (ECHO:%%J) )
) )
) )
) )>updatertempfile
) MOVE /Y updatertempfile "%~1" >nul
)>updatertempfile ENDLOCAL
MOVE /Y updatertempfile "%~1" >nul GOTO :EOF
ENDLOCAL REM ############### Help ##################
GOTO :EOF :showhelp
REM ############### Help ################## MODE 80,46
:showhelp CLS
MODE 80,46 CALL :message "Available arguments (case-insensitive):"
CLS CALL :message " -log"
CALL :message "Available arguments (case-insensitive):" ECHO: Write the console output to a logfile (user.js-update-log.txt)
CALL :message " -log" CALL :message " -logP"
ECHO: Write the console output to a logfile (user.js-update-log.txt) ECHO: Like -log, but also open the logfile after updating.
CALL :message " -logP" CALL :message " -merge"
ECHO: Like -log, but also open the logfile after updating. ECHO: Merge overrides instead of appending them. Single-line comments and
CALL :message " -merge" ECHO: _user.js.parrot lines are appended normally. Overrides for inactive
ECHO: Merge overrides instead of appending them. Single-line comments and ECHO: user.js prefs will be appended. When -Merge and -MultiOverrides are used
ECHO: _user.js.parrot lines are appended normally. Overrides for inactive ECHO: together, a user-overrides-merged.js file is also generated in the root
ECHO: user.js prefs will be appended. When -Merge and -MultiOverrides are used ECHO: directory for quick reference. It contains only the merged data from
ECHO: together, a user-overrides-merged.js file is also generated in the root ECHO: override files and can be safely discarded after updating, or used as the
ECHO: directory for quick reference. It contains only the merged data from ECHO: new user-overrides.js. When there are conflicting records for the same
ECHO: override files and can be safely discarded after updating, or used as the ECHO: pref, the value of the last one declared will be used. Visit the wiki
ECHO: new user-overrides.js. When there are conflicting records for the same ECHO: for usage examples and more detailed information.
ECHO: pref, the value of the last one declared will be used. Visit the wiki CALL :message " -multiOverrides"
ECHO: for usage examples and more detailed information. ECHO: Use any and all .js files in a user.js-overrides sub-folder as overrides
CALL :message " -multiOverrides" ECHO: instead of the default user-overrides.js file. Files are appended in
ECHO: Use any and all .js files in a user.js-overrides sub-folder as overrides ECHO: alphabetical order.
ECHO: instead of the default user-overrides.js file. Files are appended in CALL :message " -unattended"
ECHO: alphabetical order. ECHO: Run without user input.
CALL :message " -unattended" CALL :message " -singleBackup"
ECHO: Run without user input. ECHO: Use a single backup file and overwrite it on new updates, instead of
CALL :message " -singleBackup" ECHO: cumulative backups. This was the default behaviour before v4.3.
ECHO: Use a single backup file and overwrite it on new updates, instead of CALL :message " -updatebatch"
ECHO: cumulative backups. This was the default behaviour before v4.3. ECHO: Update the script itself on execution, before the normal routine.
CALL :message " -updatebatch" CALL :message ""
ECHO: Update the script itself on execution, before the normal routine. PAUSE
CALL :message "" MODE 80,25
PAUSE GOTO :begin
MODE 80,25 REM #####################################
GOTO :begin
REM #####################################