launcher upgrades

+added option to update menu for updating sillytavern-launcher repo
+added more checks if git pull fails then retry 3 times
+gitignore the xtts folder
+added option to cancel install for install.sh
-forgot to remove xtts launch from extras launch
This commit is contained in:
deffcolony
2024-01-18 19:19:19 +01:00
parent e0cde01839
commit c36c5f6545
4 changed files with 156 additions and 132 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
SillyTavern/ SillyTavern/
SillyTavern-extras/ SillyTavern-extras/
xtts/
modules.txt modules.txt

View File

@@ -219,23 +219,6 @@ goto :home
:start_extras :start_extras
REM Check if XTTS environment exists
set "xtts_env_exist="
call conda activate xtts && set "xtts_env_exist=1" || set "xtts_env_exist="
REM Ask the user if they want to start XTTS only if the environment exists
if defined xtts_env_exist (
set /p start_xtts=Start XTTS as well? [Y/N]
if /i "%start_xtts%"=="Y" (
REM Activate the xtts environment
call conda activate xtts
REM Start XTTS
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% XTTS launched in a new window.
start cmd /k "title XTTSv2 API Server && cd /d %~dp0xtts && python -m xtts_api_server"
)
)
REM Run conda activate from the Miniconda installation REM Run conda activate from the Miniconda installation
call "%miniconda_path%\Scripts\activate.bat" call "%miniconda_path%\Scripts\activate.bat"
@@ -326,37 +309,66 @@ goto :home
:update :update
title SillyTavern [UPDATE] title SillyTavern [UPDATE]
REM Update SillyTavern-Launcher
set max_retries=3
set retry_count=0
:retry_update_st_launcher
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Updating SillyTavern-Launcher...
cd /d "%~dp0"
call git pull
if %errorlevel% neq 0 (
set /A retry_count+=1
echo %yellow_bg%[%time%]%reset% %yellow_fg_strong%[WARN] Retry %retry_count% of %max_retries%%reset%
if %retry_count% lss %max_retries% goto :retry_update_st_launcher
echo %red_bg%[%time%]%reset% %red_fg_strong%[ERROR] Failed to update SillyTavern-Launcher repository after %max_retries% retries.%reset%
pause
goto :home
)
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% %green_fg_strong%SillyTavern-Launcher updated successfully.%reset%
REM Update SillyTavern
set max_retries=3
set retry_count=0
:retry_update_st
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Updating SillyTavern... echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Updating SillyTavern...
cd /d "%~dp0SillyTavern" cd /d "%~dp0SillyTavern"
REM Check if git is installed call git pull
git --version > nul 2>&1
if %errorlevel% neq 0 ( if %errorlevel% neq 0 (
echo %red_bg%[%time%]%reset% %red_fg_strong%[ERROR] git command not found in PATH. Skipping update.%reset% set /A retry_count+=1
echo %red_bg%Please make sure Git is installed and added to your PATH.%reset% echo %yellow_bg%[%time%]%reset% %yellow_fg_strong%[WARN] Retry %retry_count% of %max_retries%%reset%
) else ( if %retry_count% lss %max_retries% goto :retry_update_st
call git pull --rebase --autostash echo %red_bg%[%time%]%reset% %red_fg_strong%[ERROR] Failed to update SillyTavern repository after %max_retries% retries.%reset%
if %errorlevel% neq 0 ( pause
REM incase there is still something wrong goto :home
echo %red_bg%[%time%]%reset% %red_fg_strong%[ERROR] Errors while updating.%reset%
) else (
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% %green_fg_strong%SillyTavern updated successfully.%reset%
)
) )
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% %green_fg_strong%SillyTavern updated successfully.%reset%
REM Check if SillyTavern-extras directory exists REM Check if SillyTavern-extras directory exists
if not exist "%~dp0SillyTavern-extras" ( if not exist "%~dp0SillyTavern-extras" (
echo %yellow_bg%[%time%]%reset% %yellow_fg_strong%[WARN] SillyTavern-extras directory not found. Skipping extras update.%reset% echo %yellow_bg%[%time%]%reset% %yellow_fg_strong%[WARN] SillyTavern-extras directory not found. Skipping extras update.%reset%
goto :update_xtts goto :update_xtts
) )
cd /d "%~dp0SillyTavern-extras"
REM Update SillyTavern-extras
set max_retries=3
set retry_count=0
:retry_update_extras
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Updating SillyTavern-extras... echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Updating SillyTavern-extras...
cd /d "%~dp0SillyTavern-extras"
call git pull call git pull
if %errorlevel% neq 0 ( if %errorlevel% neq 0 (
REM in case there is still something wrong set /A retry_count+=1
echo %red_bg%[%time%]%reset% %red_fg_strong%[ERROR] Errors while updating.%reset% echo %yellow_bg%[%time%]%reset% %yellow_fg_strong%[WARN] Retry %retry_count% of %max_retries%%reset%
) else ( if %retry_count% lss %max_retries% goto :retry_update_extras
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% %green_fg_strong%SillyTavern-extras updated successfully.%reset% echo %red_bg%[%time%]%reset% %red_fg_strong%[ERROR] Failed to update SillyTavern-extras repository after %max_retries% retries.%reset%
goto :update_xtts pause
goto :home
) )
:update_xtts :update_xtts

View File

@@ -309,6 +309,7 @@ install_st_extras() {
echo -e "1. NVIDIA" echo -e "1. NVIDIA"
echo -e "2. AMD" echo -e "2. AMD"
echo -e "3. None (CPU-only mode)" echo -e "3. None (CPU-only mode)"
echo -e "0. Cancel install"
# Get GPU information # Get GPU information
gpu_info="" gpu_info=""
@@ -341,6 +342,8 @@ install_st_extras() {
elif [ "$gpu_choice" == "3" ]; then elif [ "$gpu_choice" == "3" ]; then
log_message "INFO" "Using CPU-only mode" log_message "INFO" "Using CPU-only mode"
install_st_extras_pre install_st_extras_pre
elif [ "$gpu_choice" == "0" ]; then
installer
else else
log_message "ERROR" "${red_fg_strong}Invalid number. Please enter a valid number.${reset}" log_message "ERROR" "${red_fg_strong}Invalid number. Please enter a valid number.${reset}"
read -p "Press Enter to continue..." read -p "Press Enter to continue..."
@@ -417,70 +420,70 @@ install_st_extras_pre() {
# Function to install_xtts # Function to install_xtts
install_xtts() { install_xtts() {
log_message "INFO" "Installing XTTS..." log_message "INFO" "Installing XTTS..."
# Activate the Miniconda installation # Activate the Miniconda installation
log_message "INFO" "Activating Miniconda environment..." log_message "INFO" "Activating Miniconda environment..."
source "$miniconda_path/bin/activate" source "$miniconda_path/bin/activate"
# Create a Conda environment named xtts # Create a Conda environment named xtts
log_message "INFO" "Creating Conda environment xtts..." log_message "INFO" "Creating Conda environment xtts..."
conda create -n xtts -y conda create -n xtts -y
# Activate the xtts environment # Activate the xtts environment
log_message "INFO" "Activating Conda environment xtts..." log_message "INFO" "Activating Conda environment xtts..."
source activate xtts source activate xtts
# Check if xtts activation was successful # Check if xtts activation was successful
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
log_message "INFO" "Conda environment xtts activated successfully." log_message "INFO" "Conda environment xtts activated successfully."
else else
log_message "ERROR" "${red_fg_strong}Failed to activate Conda environment: xtts${reset}" log_message "ERROR" "${red_fg_strong}Failed to activate Conda environment: xtts${reset}"
log_message "INFO" "Press Enter to try again otherwise close the installer and restart." log_message "INFO" "Press Enter to try again otherwise close the installer and restart."
read -p "Press Enter to try again..." read -p "Press Enter to try again..."
install_xtts install_xtts
fi fi
# Install Python 3.10 in the xtts environment # Install Python 3.10 in the xtts environment
log_message "INFO" "Installing Python in the Conda environment..." log_message "INFO" "Installing Python in the Conda environment..."
conda install python=3.10 -y conda install python=3.10 -y
# Create folders for xtts # Create folders for xtts
log_message "INFO" "Creating xtts folders..." log_message "INFO" "Creating xtts folders..."
mkdir "$PWD/xtts" mkdir "$PWD/xtts"
mkdir "$PWD/xtts/speakers" mkdir "$PWD/xtts/speakers"
mkdir "$PWD/xtts/output" mkdir "$PWD/xtts/output"
# Clone the xtts-api-server repository for voice examples # Clone the xtts-api-server repository for voice examples
log_message "INFO" "Cloning xtts-api-server repository..." log_message "INFO" "Cloning xtts-api-server repository..."
git clone https://github.com/daswer123/xtts-api-server.git git clone https://github.com/daswer123/xtts-api-server.git
log_message "INFO" "Adding voice examples to speakers directory..." log_message "INFO" "Adding voice examples to speakers directory..."
cp -r "$PWD/xtts-api-server/example/"* "$PWD/xtts/speakers/" cp -r "$PWD/xtts-api-server/example/"* "$PWD/xtts/speakers/"
log_message "INFO" "Removing the xtts-api-server directory..." log_message "INFO" "Removing the xtts-api-server directory..."
rm -rf "$PWD/xtts-api-server" rm -rf "$PWD/xtts-api-server"
# Install pip3 requirements # Install pip3 requirements
log_message "INFO" "Installing pip3 requirements for xtts..." log_message "INFO" "Installing pip3 requirements for xtts..."
pip3 install xtts-api-server pip3 install xtts-api-server
pip3 install pydub pip3 install pydub
pip3 install stream2sentence pip3 install stream2sentence
# Use the GPU choice made earlier to set the correct PyTorch index-url # Use the GPU choice made earlier to set the correct PyTorch index-url
if [ "$GPU_CHOICE" == "1" ]; then if [ "$GPU_CHOICE" == "1" ]; then
log_message "INFO" "Installing NVIDIA version of PyTorch" log_message "INFO" "Installing NVIDIA version of PyTorch"
pip3 install torch==2.1.1+cu118 torchvision torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118 pip3 install torch==2.1.1+cu118 torchvision torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118
install_st_extras_post install_st_extras_post
elif [ "$GPU_CHOICE" == "2" ]; then elif [ "$GPU_CHOICE" == "2" ]; then
log_message "INFO" "Installing AMD version of PyTorch" log_message "INFO" "Installing AMD version of PyTorch"
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.6 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.6
install_st_extras_post install_st_extras_post
elif [ "$GPU_CHOICE" == "3" ]; then elif [ "$GPU_CHOICE" == "3" ]; then
log_message "INFO" "Installing CPU-only version of PyTorch" log_message "INFO" "Installing CPU-only version of PyTorch"
pip3 install torch torchvision torchaudio pip3 install torch torchvision torchaudio
install_st_extras_post install_st_extras_post
fi fi
} }
install_st_extras_post() { install_st_extras_post() {
@@ -609,6 +612,7 @@ install_extras() {
echo -e "1. NVIDIA" echo -e "1. NVIDIA"
echo -e "2. AMD" echo -e "2. AMD"
echo -e "3. None (CPU-only mode)" echo -e "3. None (CPU-only mode)"
echo -e "0. Cancel install"
# Get GPU information # Get GPU information
gpu_info="" gpu_info=""
@@ -641,6 +645,8 @@ install_extras() {
elif [ "$gpu_choice" == "3" ]; then elif [ "$gpu_choice" == "3" ]; then
log_message "INFO" "Using CPU-only mode" log_message "INFO" "Using CPU-only mode"
install_extras_pre install_extras_pre
elif [ "$gpu_choice" == "0" ]; then
installer
else else
log_message "ERROR" "${red_fg_strong}Invalid number. Please enter a valid number.${reset}" log_message "ERROR" "${red_fg_strong}Invalid number. Please enter a valid number.${reset}"
read -p "Press Enter to continue..." read -p "Press Enter to continue..."
@@ -815,7 +821,7 @@ install_extras_post() {
installer installer
} }
# Function for the installer menu # Installer Menu - Frontend
installer() { installer() {
echo -e "\033]0;SillyTavern [INSTALLER]\007" echo -e "\033]0;SillyTavern [INSTALLER]\007"
clear clear

View File

@@ -154,7 +154,7 @@ home() {
echo "What would you like to do?" echo "What would you like to do?"
echo "1. Start SillyTavern" echo "1. Start SillyTavern"
echo "2. Start Extras" echo "2. Start Extras"
echo "3. Start SillyTavern + Extras " echo "3. Start XTTS"
echo "4. Update" echo "4. Update"
echo "5. Backup" echo "5. Backup"
echo "6. Switch branch" echo "6. Switch branch"
@@ -179,7 +179,7 @@ home() {
case $home_choice in case $home_choice in
1) start_st ;; 1) start_st ;;
2) start_extras ;; 2) start_extras ;;
3) start_st_extras ;; 3) start_xtts ;;
4) update ;; 4) update ;;
5) backup_menu ;; 5) backup_menu ;;
6) switch_branch_menu ;; 6) switch_branch_menu ;;
@@ -281,40 +281,38 @@ start_extras() {
# Start SillyTavern in the detected terminal # Start SillyTavern in the detected terminal
if [ "$(uname)" == "Darwin" ]; then if [ "$(uname)" == "Darwin" ]; then
log_message "INFO" "Detected macOS. Opening new Terminal window." log_message "INFO" "Detected macOS. Opening new Terminal window."
open -a Terminal "$(dirname "$0")/SillyTavern-extras/start.sh" open -a Terminal --args --title="SillyTavern Extras" --working-directory="$(dirname "$0")/SillyTavern-extras" --command "conda activate xtts; python server.py --listen --rvc-save-file --max-content-length=1000 --enable-modules=rvc,caption; exec bash"
else else
exec "$detected_terminal" -e "cd $(dirname "$0")./SillyTavern-extras && ./start.sh" & exec "$detected_terminal" -e "cd '$(dirname "$0")/SillyTavern-extras' && conda activate extras && python server.py --listen --rvc-save-file --max-content-length=1000 --enable-modules=rvc,caption; bash"
fi fi
fi fi
home home
} }
# Function to start SillyTavern with Extras # Function to start xtts
start_st_extras() { start_xtts() {
check_nodejs check_nodejs
if [ "$LAUNCH_NEW_WIN" = "0" ]; then
log_message "INFO" "SillyTavern launched"
./start.sh &
local main_pid=$!
log_message "INFO" "Extras launched under pid $main_pid"
{
#has to be after the first one, so we are 1 directory up
cd "$(dirname "$0")./SillyTavern-extras" || {
log_message "ERROR" "SillyTavern-extras directory not found. Please make sure you have installed SillyTavern-extras."
kill $main_pid
exit 1
}
log_message "INFO" "Wordking dir: $(pwd)"
./start.sh
} &
local extras_pid=$!
log_message "INFO" "Extras launched under pid $extras_pid"
wait $main_pid if [ "$LAUNCH_NEW_WIN" = "0" ]; then
kill $extras_pid local main_pid=$!
log_message "INFO" "xtts launched under pid $main_pid"
# Move to xtts directory
cd "$(dirname "$0")/xtts" || {
log_message "ERROR" "xtts directory not found. Please make sure you have installed xtts"
kill "$main_pid"
exit 1
}
log_message "INFO" "Working dir: $(pwd)"
./start.sh &
local xtts_pid=$!
log_message "INFO" "xtts launched under pid $xtts_pid"
wait "$main_pid"
kill "$xtts_pid"
else else
log_message "INFO" "SillyTavern launched in a new window." log_message "INFO" "xtts launched in a new window."
log_message "INFO" "Extras launched in a new window."
# Find a suitable terminal # Find a suitable terminal
local detected_terminal local detected_terminal
detected_terminal=$(find_terminal) detected_terminal=$(find_terminal)
@@ -322,17 +320,14 @@ start_st_extras() {
# Enable read p command for troubleshooting # Enable read p command for troubleshooting
# read -p "Press Enter to continue..." # read -p "Press Enter to continue..."
# Start SillyTavern in the detected terminal # Start XTTS in the detected terminal
if [ "$(uname)" == "Darwin" ]; then if [ "$(uname)" == "Darwin" ]; then
log_message "INFO" "Detected macOS. Opening new Terminal window." log_message "INFO" "Detected macOS. Opening new Terminal window."
open -a Terminal "$(dirname "$0")/start.sh" open -a Terminal --args --title="XTTSv2 API Server" --working-directory="$(dirname "$0")/xtts" --command "conda activate xtts; python -m xtts_api_server; exec bash"
open -a Terminal "$(dirname "$0")/SillyTavern-extras/start.sh"
else else
exec "$detected_terminal" -e "cd $(dirname "$0")./SillyTavern && ./start.sh" & exec "$detected_terminal" -e "cd '$(dirname "$0")/xtts' && conda activate xtts && python -m xtts_api_server; bash"
exec "$detected_terminal" -e "cd $(dirname "$0")./SillyTavern-extras && ./start.sh" &
fi fi
fi fi
home home
} }
@@ -600,6 +595,14 @@ edit_extras_modules() {
edit_extras_modules edit_extras_modules
} }
# Function to remove node modules folder
remove_node_modules() {
log_message "INFO" "Removing node_modules folder..."
cd "$(dirname "$0")./SillyTavern"
rm -rf node_modules
toolbox
}
# Function to reinstall SillyTavern # Function to reinstall SillyTavern
reinstall_sillytavern() { reinstall_sillytavern() {
@@ -617,7 +620,7 @@ reinstall_sillytavern() {
read confirmation read confirmation
if [ "$confirmation" = "Y" ] || [ "$confirmation" = "y" ]; then if [ "$confirmation" = "Y" ] || [ "$confirmation" = "y" ]; then
cd "$PWD/SillyTavern" cd "$(dirname "$0")./SillyTavern"
# Remove non-excluded folders # Remove non-excluded folders
for dir in *; do for dir in *; do
@@ -681,7 +684,7 @@ reinstall_extras() {
read confirmation read confirmation
if [ "$confirmation" = "Y" ] || [ "$confirmation" = "y" ]; then if [ "$confirmation" = "Y" ] || [ "$confirmation" = "y" ]; then
cd "$PWD/SillyTavern-extras" cd "$(dirname "$0")./SillyTavern-extras"
# Remove non-excluded folders # Remove non-excluded folders
for dir in *; do for dir in *; do
@@ -783,7 +786,7 @@ uninstall_st_extras() {
read confirmation read confirmation
if [ "$confirmation" = "Y" ] || [ "$confirmation" = "y" ]; then if [ "$confirmation" = "Y" ] || [ "$confirmation" = "y" ]; then
cd "$PWD" cd "$(dirname "$0")"
log_message "INFO" "Removing the SillyTavern + Sillytavern-extras directory..." log_message "INFO" "Removing the SillyTavern + Sillytavern-extras directory..."
rm -rf SillyTavern SillyTavern-extras rm -rf SillyTavern SillyTavern-extras
log_message "INFO" "Removing the Conda environment 'extras'..." log_message "INFO" "Removing the Conda environment 'extras'..."
@@ -809,9 +812,10 @@ toolbox() {
echo "3. Install Node.js" echo "3. Install Node.js"
echo "4. Edit Environment" echo "4. Edit Environment"
echo "5. Edit Extras Modules" echo "5. Edit Extras Modules"
echo "6. Reinstall SillyTavern" echo "6. Remove node_modules folder"
echo "7. Reinstall Extras" echo "7. Reinstall SillyTavern"
echo "8. Uninstall SillyTavern + Extras" echo "8. Reinstall Extras"
echo "9. Uninstall SillyTavern + Extras"
echo "0. Back to Home" echo "0. Back to Home"
read -p "Choose Your Destiny: " toolbox_choice read -p "Choose Your Destiny: " toolbox_choice
@@ -823,9 +827,10 @@ toolbox() {
3) install_nodejs ;; 3) install_nodejs ;;
4) edit_environment ;; 4) edit_environment ;;
5) edit_extras_modules ;; 5) edit_extras_modules ;;
6) reinstall_sillytavern ;; 6) remove_node_modules ;;
7) reinstall_extras ;; 7) reinstall_sillytavern ;;
8) uninstall_st_extras ;; 8) reinstall_extras ;;
9) uninstall_st_extras ;;
0) home ;; 0) home ;;
*) echo -e "${yellow_fg_strong}WARNING: Invalid number. Please insert a valid number.${reset}" *) echo -e "${yellow_fg_strong}WARNING: Invalid number. Please insert a valid number.${reset}"
read -p "Press Enter to continue..." read -p "Press Enter to continue..."