SillyTavern/UpdateForkAndStart.bat

111 lines
2.8 KiB
Batchfile
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
@setlocal enabledelayedexpansion
pushd %~dp0
echo Checking Git installation
git --version > nul 2>&1
if %errorlevel% neq 0 (
echo Git is not installed on this system.
echo Install it from https://git-scm.com/downloads
goto end
)
if not exist .git (
echo Not running from a Git repository. Reinstall using an officially supported method to get updates.
echo See: https://docs.sillytavern.app/installation/windows/
goto end
)
REM Checking current branch
FOR /F "tokens=*" %%i IN ('git rev-parse --abbrev-ref HEAD') DO SET CURRENT_BRANCH=%%i
echo Current branch: %CURRENT_BRANCH%
REM Checking for automatic branch switching configuration
set AUTO_SWITCH=
FOR /F "tokens=*" %%j IN ('git config --local script.autoSwitch') DO SET AUTO_SWITCH=%%j
SET TARGET_BRANCH=%CURRENT_BRANCH%
if NOT "!AUTO_SWITCH!"=="" (
if "!AUTO_SWITCH!"=="s" (
goto autoswitch-staging
)
if "!AUTO_SWITCH!"=="r" (
goto autoswitch-release
)
if "!AUTO_SWITCH!"=="staging" (
:autoswitch-staging
echo Auto-switching to staging branch
git checkout staging
SET TARGET_BRANCH=staging
goto update
)
if "!AUTO_SWITCH!"=="release" (
:autoswitch-release
echo Auto-switching to release branch
git checkout release
SET TARGET_BRANCH=release
goto update
)
echo Auto-switching defined to stay on current branch
goto update
)
if "!CURRENT_BRANCH!"=="staging" (
echo Staying on the current branch
goto update
)
if "!CURRENT_BRANCH!"=="release" (
echo Staying on the current branch
goto update
)
echo You are not on 'staging' or 'release'. You are on '!CURRENT_BRANCH!'.
set /p "CHOICE=Do you want to switch to 'staging' (s), 'release' (r), or stay (any other key)? "
if /i "!CHOICE!"=="s" (
echo Switching to staging branch
git checkout staging
SET TARGET_BRANCH=staging
goto update
)
if /i "!CHOICE!"=="r" (
echo Switching to release branch
git checkout release
SET TARGET_BRANCH=release
goto update
)
echo Staying on the current branch
:update
REM Checking for 'upstream' remote
git remote | findstr "upstream" > nul
if %errorlevel% equ 0 (
echo Updating and rebasing against 'upstream'
git fetch upstream
git rebase upstream/%TARGET_BRANCH% --autostash
goto install
)
echo Updating and rebasing against 'origin'
git pull --rebase --autostash origin %TARGET_BRANCH%
:install
if %errorlevel% neq 0 (
echo There were errors while updating.
echo See the update FAQ at https://docs.sillytavern.app/usage/update/#common-update-problems
goto end
)
echo Installing npm packages and starting server
set NODE_ENV=production
call npm install --no-audit --no-fund --loglevel=error --no-progress --omit=dev
node server.js %*
:end
pause
popd