update STL for Linux&Mac

Update STL to make it stable and useable & bring most features from the current Windows version. Features from app installer are work in progress
This commit is contained in:
deffcolony
2025-02-24 01:11:14 +01:00
parent 2ab18347ce
commit 240badb9c9
3 changed files with 3242 additions and 1134 deletions

View File

@@ -4,7 +4,6 @@
cd /d "%st_install_path%" cd /d "%st_install_path%"
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Removing node_modules folder... echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% Removing node_modules folder...
rmdir /s /q "node_modules" rmdir /s /q "node_modules"
call npm cache clean --force
echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% node_modules successfully removed. echo %blue_bg%[%time%]%reset% %blue_fg_strong%[INFO]%reset% node_modules successfully removed.
pause pause

View File

@@ -121,12 +121,6 @@ install_miniconda() {
echo "Miniconda installed successfully in $HOME/miniconda" echo "Miniconda installed successfully in $HOME/miniconda"
} }
# Define the paths and filenames for the shortcut creation
script_path="$(realpath "$(dirname "$0")")/launcher.sh"
icon_path="$(realpath "$(dirname "$0")")/st-launcher.ico"
script_name=st-launcher
desktop_dir="$(eval echo ~$(logname))/Desktop"
desktop_file="$desktop_dir/st-launcher.desktop"
# Function to log messages with timestamps and colors # Function to log messages with timestamps and colors
log_message() { log_message() {
@@ -231,77 +225,73 @@ install_git() {
} }
# Function to install Node.js and npm install_nodejs() {
install_nodejs_npm() { if ! command -v node &> /dev/null; then
if ! command -v npm &>/dev/null || ! command -v node &>/dev/null; then log_message "WARN" "${yellow_fg_strong}Node.js is not installed on this system${reset}"
echo -e "${yellow_fg_strong}[WARN] Node.js and/or npm are not installed on this system.${reset}"
if command -v apt-get &>/dev/null; then case "$(uname -s)" in
# Debian/Ubuntu-based system Linux)
log_message "INFO" "Installing Node.js and npm using apt..." package_manager=$(detect_package_manager)
sudo apt-get update case "$package_manager" in
sudo apt-get install -y curl apt)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash log_message "INFO" "Detected apt (Debian/Ubuntu). Installing Node.js..."
source "$NVM_DIR/nvm.sh" sudo apt update && sudo apt install -y nodejs npm
read -p "Press Enter to continue..." ;;
nvm install --lts dnf|yum)
nvm use --lts log_message "INFO" "Detected dnf/yum (Red Hat/Fedora). Installing Node.js..."
elif command -v yum &>/dev/null; then sudo $package_manager install -y nodejs npm
# Red Hat/Fedora-based system ;;
log_message "INFO" "Installing Node.js and npm using yum..." apk)
sudo yum install -y curl log_message "INFO" "Detected apk (Alpine). Installing Node.js..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash sudo apk add nodejs npm
source "$NVM_DIR/nvm.sh" ;;
read -p "Press Enter to continue..." pacman)
nvm install --lts log_message "INFO" "Detected pacman (Arch). Installing Node.js..."
nvm use --lts sudo pacman -Sy --noconfirm nodejs npm
elif command -v apk &>/dev/null; then ;;
# Alpine Linux-based system emerge)
log_message "INFO" "Installing Node.js and npm using apk..." log_message "INFO" "Detected emerge (Gentoo). Installing Node.js..."
sudo apk add curl sudo emerge --ask nodejs npm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ;;
source "$NVM_DIR/nvm.sh" zypper)
read -p "Press Enter to continue..." log_message "INFO" "Detected zypper (openSUSE). Installing Node.js..."
nvm install --lts sudo zypper install -y nodejs npm
nvm use --lts ;;
elif command -v pacman &>/dev/null; then xbps)
# Arch Linux-based system log_message "INFO" "Detected xbps (Void). Installing Node.js..."
log_message "INFO" "Installing Node.js and npm using pacman..." sudo xbps-install -y nodejs npm
sudo pacman -S --noconfirm curl ;;
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash nix)
source "$NVM_DIR/nvm.sh" log_message "INFO" "Detected nix (NixOS). Installing Node.js..."
read -p "Press Enter to continue..." nix-env -iA nixpkgs.nodejs
nvm install --lts ;;
nvm use --lts guix)
elif command -v emerge &>/dev/null; then log_message "INFO" "Detected guix (Guix). Installing Node.js..."
# Gentoo-based system guix package -i node
log_message "INFO" "Installing Node.js and npm using emerge..." ;;
sudo emerge -av net-misc/curl *)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash log_message "ERROR" "${red_fg_strong}Unsupported package manager or distribution.${reset}"
source "$NVM_DIR/nvm.sh" exit 1
read -p "Press Enter to continue..." ;;
nvm install --lts esac
nvm use --lts ;;
elif command -v pkg &>/dev/null; then Darwin)
# Termux on Android log_message "INFO" "Detected macOS. Installing Node.js via Homebrew..."
log_message "INFO" "Installing Node.js and npm using pkg..." if ! command -v brew &> /dev/null; then
pkg install nodejs npm log_message "ERROR" "${red_fg_strong}Homebrew not installed. Install it first: https://brew.sh/${reset}"
elif command -v brew &>/dev/null; then exit 1
# macOS fi
log_message "INFO" "Installing Node.js and npm using Homebrew..." brew install node
brew install node ;;
elif command -v zypper &>/dev/null; then *)
# openSUSE log_message "ERROR" "${red_fg_strong}Unsupported operating system.${reset}"
log_message "INFO" "Installing Node.js and npm using zypper..." exit 1
sudo zypper --non-interactive install nodejs npm ;;
else esac
log_message "ERROR" "${red_fg_strong}Unsupported Linux distribution.${reset}"
exit 1
fi
echo "${green_fg_strong}Node.js and npm installed and configured with nvm.${reset}" log_message "INFO" "${green_fg_strong}Node.js is installed.${reset}"
else else
echo -e "${blue_fg_strong}[INFO] Node.js and npm are already installed.${reset}" log_message "INFO" "${blue_fg_strong}Node.js is already installed.${reset}"
fi fi
} }
@@ -552,6 +542,103 @@ install_all_final() {
} }
########################################################################################
########################################################################################
####################### SUPPORT MENU FUNCTIONS ########################################
########################################################################################
########################################################################################
# Functions for Support Menu - Backend
issue_report() {
if [ "$EUID" -eq 0 ]; then
log_message "ERROR" "${red_fg_strong}Cannot run xdg-open as root. Please run the script without root permission.${reset}"
else
if [ "$(uname -s)" == "Darwin" ]; then
open https://github.com/SillyTavern/SillyTavern-Launcher/issues/new/choose
else
xdg-open https://github.com/SillyTavern/SillyTavern-Launcher/issues/new/choose
fi
fi
read -p "Press Enter to continue..."
support
}
documentation() {
if [ "$EUID" -eq 0 ]; then
log_message "ERROR" "${red_fg_strong}Cannot run xdg-open as root. Please run the script without root permission.${reset}"
else
if [ "$(uname -s)" == "Darwin" ]; then
open https://docs.sillytavern.app/
else
xdg-open https://docs.sillytavern.app/
fi
fi
read -p "Press Enter to continue..."
support
}
discord() {
if [ "$EUID" -eq 0 ]; then
log_message "ERROR" "${red_fg_strong}Cannot run xdg-open as root. Please run the script without root permission.${reset}"
else
if [ "$(uname -s)" == "Darwin" ]; then
open https://discord.gg/sillytavern
else
xdg-open https://discord.gg/sillytavern
fi
fi
read -p "Press Enter to continue..."
support
}
############################################################
################# SUPPORT MENU - FRONTEND ##################
############################################################
support() {
echo -e "\033]0;SillyTavern [SUPPORT]\007"
clear
echo -e "${blue_fg_strong}| > / Installer / Support |${reset}"
echo -e "${blue_fg_strong}==============================================================${reset}"
echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo -e "${cyan_fg_strong}| What would you like to do? |${reset}"
echo " 1. I want to report an issue"
echo " 2. Documentation"
echo " 3. Discord"
echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo -e "${cyan_fg_strong}| Menu Options: |${reset}"
echo " 0. Back"
echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo -e "${cyan_fg_strong}| |${reset}"
read -p " Choose Your Destiny: " support_choice
# Support Menu - Backend
case $support_choice in
1) issue_report ;;
2) documentation ;;
3) discord ;;
0) installer ;;
*) echo -e "${yellow_fg_strong}WARNING: Invalid number. Please insert a valid number.${reset}"
read -p "Press Enter to continue..."
support ;;
esac
}
########################################################################################
########################################################################################
####################### INSTALLER MENU FUNCTIONS ######################################
########################################################################################
########################################################################################
# Function to install SillyTavern # Function to install SillyTavern
install_sillytavern() { install_sillytavern() {
echo -e "\033]0;SillyTavern [INSTALL-ST]\007" echo -e "\033]0;SillyTavern [INSTALL-ST]\007"
@@ -564,24 +651,10 @@ install_sillytavern() {
git clone https://github.com/SillyTavern/SillyTavern.git git clone https://github.com/SillyTavern/SillyTavern.git
log_message "INFO" "${green_fg_strong}SillyTavern installed successfully.${reset}" log_message "INFO" "${green_fg_strong}SillyTavern installed successfully.${reset}"
# Ask if the user wants to create a desktop shortcut # Ask if the user wants to create desktop shortcuts
read -p "Do you want to create a shortcut on the desktop? [Y/n] " create_shortcut read -p "Do you want to create desktop shortcuts? [Y/n] " create_shortcut
if [[ "${create_shortcut}" == "Y" || "${create_shortcut}" == "y" ]]; then if [[ "${create_shortcut}" =~ ^[Yy]$ ]]; then
create_desktop_shortcuts
# Create the desktop shortcut
echo -e "${blue_bg}[$(date +%T)]${reset} ${blue_fg_strong}[INFO]${reset} Creating desktop shortcut..."
echo "[Desktop Entry]" > "$desktop_file"
echo "Version=1.0" >> "$desktop_file"
echo "Type=Application" >> "$desktop_file"
echo "Name=$script_name" >> "$desktop_file"
echo "Exec=$script_path" >> "$desktop_file"
echo "Icon=$icon_path" >> "$desktop_file"
echo "Terminal=true" >> "$desktop_file"
echo "Comment=SillyTavern Launcher" >> "$desktop_file"
chmod +x "$desktop_file"
echo -e "${blue_bg}[$(date +%T)]${reset} ${blue_fg_strong}[INFO]${reset} ${green_fg_strong}Desktop shortcut created at: $desktop_file${reset}"
fi fi
# Ask if the user wants to start the launcher # Ask if the user wants to start the launcher
@@ -597,6 +670,102 @@ install_sillytavern() {
} }
create_desktop_shortcuts() {
# Common variables
stl_root="$(dirname "$(realpath "$0")")"
st_install_path="$stl_root/SillyTavern"
desktop_dir=""
launcher_script="$stl_root/launcher.sh"
sillytavern_script="$st_install_path/start.sh"
icon_launcher="$stl_root/st-launcher.ico"
icon_sillytavern="$stl_root/st.ico"
# Detect desktop environment
case "$(uname -s)" in
Linux)
desktop_dir="$HOME/Desktop"
# Create directory if it doesn't exist
mkdir -p "$desktop_dir"
# Create launcher shortcut
echo -e "${blue_bg}[$(date +%T)]${reset} ${blue_fg_strong}[INFO]${reset} Creating ST-Launcher shortcut..."
cat << EOF > "$desktop_dir/ST-Launcher.desktop"
[Desktop Entry]
Version=1.0
Type=Application
Name=SillyTavern Launcher
Exec="$launcher_script"
Icon=$icon_launcher
Terminal=true
Comment=Launch SillyTavern AI Interface
Path=$stl_root
EOF
chmod +x "$desktop_dir/ST-Launcher.desktop"
# Create SillyTavern direct start shortcut
echo -e "${blue_bg}[$(date +%T)]${reset} ${blue_fg_strong}[INFO]${reset} Creating SillyTavern shortcut..."
cat << EOF > "$desktop_dir/SillyTavern.desktop"
[Desktop Entry]
Version=1.0
Type=Application
Name=SillyTavern
Exec="$sillytavern_script"
Icon=$icon_sillytavern
Terminal=true
Comment=Start SillyTavern Directly
Path=$st_install_path
EOF
chmod +x "$desktop_dir/SillyTavern.desktop"
;;
Darwin)
desktop_dir="$HOME/Desktop"
# Create launcher shortcut
echo -e "${blue_bg}[$(date +%T)]${reset} ${blue_fg_strong}[INFO]${reset} Creating ST-Launcher shortcut..."
cat << EOF > "$desktop_dir/ST-Launcher.command"
#!/bin/zsh
cd "$stl_root" && ./launcher.sh
EOF
chmod +x "$desktop_dir/ST-Launcher.command"
# Create SillyTavern direct start shortcut
echo -e "${blue_bg}[$(date +%T)]${reset} ${blue_fg_strong}[INFO]${reset} Creating SillyTavern shortcut..."
cat << EOF > "$desktop_dir/SillyTavern.command"
#!/bin/zsh
cd "$st_install_path" && ./start.sh
EOF
chmod +x "$desktop_dir/SillyTavern.command"
# Set custom icons (requires osascript)
if [ -f "$icon_launcher" ]; then
osascript << EOF
set iconPath to POSIX file "$icon_launcher"
tell application "Finder" to set label icon of alias file ("$desktop_dir/ST-Launcher.command" as POSIX file) to iconPath
EOF
fi
if [ -f "$icon_sillytavern" ]; then
osascript << EOF
set iconPath to POSIX file "$icon_sillytavern"
tell application "Finder" to set label icon of alias file ("$desktop_dir/SillyTavern.command" as POSIX file) to iconPath
EOF
fi
;;
*)
echo -e "${red_fg_strong}Unsupported operating system for desktop shortcuts${reset}"
return 1
;;
esac
# Verify creation
if [ -f "$desktop_dir/ST-Launcher"* ] && [ -f "$desktop_dir/SillyTavern"* ]; then
echo -e "${green_fg_strong}Shortcuts created successfully on "$desktop_dir/SillyTavern" ${reset}"
else
echo -e "${yellow_fg_strong}Warning: Shortcuts might not have been created correctly${reset}"
fi
}
# Function to install Extras # Function to install Extras
install_extras() { install_extras() {
echo -e "\033]0;SillyTavern [INSTALL-EXTRAS]\007" echo -e "\033]0;SillyTavern [INSTALL-EXTRAS]\007"
@@ -788,23 +957,35 @@ install_xtts_successful() {
} }
# Exit Function
exit_program() {
clear
echo "Bye!"
exit 0
}
############################################################ ############################################################
################# INSTALLER - FRONTEND ##################### ################# INSTALLER - FRONTEND #####################
############################################################ ############################################################
installer() { installer() {
echo -e "\033]0;SillyTavern [INSTALLER]\007" echo -e "\033]0;SillyTavern [INSTALLER]\007"
clear clear
echo -e "${blue_fg_strong}/ Installer${reset}" echo -e "${blue_fg_strong}| > / Installer |${reset}"
echo "-------------------------------------" echo -e "${blue_fg_strong}==============================================================${reset}"
echo "What would you like to do?" echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo "1. Install SillyTavern" echo -e "${cyan_fg_strong}| What would you like to do? |${reset}"
echo "2. Install Extras" echo " 1. Install SillyTavern"
echo "3. Install XTTS" echo " 2. Install XTTS"
echo "4. Install All Options From Above" echo " 3. Support"
echo "5. Support" echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo "0. Exit" echo -e "${cyan_fg_strong}| Discontinued |${reset}"
echo " 4. Install Extras"
read -p "Choose Your Destiny (default is 1): " choice echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo -e "${cyan_fg_strong}| Menu Options: |${reset}"
echo " 0. Exit"
echo -e "${cyan_fg_strong} _____________________________________________________________${reset}"
echo -e "${cyan_fg_strong}| |${reset}"
read -p " Choose Your Destiny (default is 1): " choice
# Default to choice 1 if no input is provided # Default to choice 1 if no input is provided
if [ -z "$choice" ]; then if [ -z "$choice" ]; then
@@ -814,152 +995,164 @@ installer() {
################# INSTALLER - BACKEND ##################### ################# INSTALLER - BACKEND #####################
case $choice in case $choice in
1) install_sillytavern ;; 1) install_sillytavern ;;
2) install_extras ;; 2) install_xtts ;;
3) install_xtts ;; 3) support ;;
4) install_all ;; 4) install_extras ;;
5) support ;; # 4) install_all ;;
0) exit ;; 0) exit_program ;;
*) 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..."
installer ;; installer ;;
esac esac
} }
# Functions for Support Menu - Backend
issue_report() {
if [ "$EUID" -eq 0 ]; then
log_message "ERROR" "${red_fg_strong}Cannot run xdg-open as root. Please run the script without root permission.${reset}"
else
if [ "$(uname -s)" == "Darwin" ]; then
open https://github.com/SillyTavern/SillyTavern-Launcher/issues/new/choose
else
xdg-open https://github.com/SillyTavern/SillyTavern-Launcher/issues/new/choose
fi
fi
read -p "Press Enter to continue..."
support
}
documentation() { detect_package_manager() {
if [ "$EUID" -eq 0 ]; then local package_manager
log_message "ERROR" "${red_fg_strong}Cannot run xdg-open as root. Please run the script without root permission.${reset}"
else
if [ "$(uname -s)" == "Darwin" ]; then
open https://docs.sillytavern.app/
else
xdg-open https://docs.sillytavern.app/
fi
fi
read -p "Press Enter to continue..."
support
}
discord() { # Check for macOS first
if [ "$EUID" -eq 0 ]; then if [ "$(uname)" = "Darwin" ]; then
log_message "ERROR" "${red_fg_strong}Cannot run xdg-open as root. Please run the script without root permission.${reset}" if command -v brew &> /dev/null; then
else echo "brew"
if [ "$(uname -s)" == "Darwin" ]; then return 0
open https://discord.gg/sillytavern
else else
xdg-open https://discord.gg/sillytavern echo "unknown"
return 1
fi fi
fi fi
read -p "Press Enter to continue..."
support # Check for Linux package managers
case "$(true; command -v apt dnf yum apk pacman emerge zypper xbps-install guix nix-env 2>/dev/null | head -n1)" in
*apt) package_manager="apt" ;;
*dnf) package_manager="dnf" ;;
*yum) package_manager="yum" ;;
*apk) package_manager="apk" ;;
*pacman) package_manager="pacman" ;;
*emerge) package_manager="emerge" ;;
*zypper) package_manager="zypper" ;;
*xbps-install) package_manager="xbps" ;;
*guix) package_manager="guix" ;;
*nix-env) package_manager="nix" ;;
*)
if [ -f /etc/os-release ]; then
os_id=$(grep -E '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"')
case "$os_id" in
almalinux|centos_stream|ol|rhel|rocky|fedora|fedoraremixforwsl|nobara)
package_manager="yum" ;;
alpine|wolfi)
package_manager="apk" ;;
arch|arch32|archcraft|arcolinux|arkane|artix|aurora|bazzite|blackarch|blendos|bluefin|bodhi|cachyos|chimera|chimeraos|endeavouros|garuda|hyperbola|kaos|manjaro|manjaro-arm|rebornos|steamos|void)
package_manager="pacman" ;;
debian|devuan|elementary|kali|linuxmint|parrot|pika|pisilinux|pop|pureos|raspbian|tails|ubuntu|ubuntu_kylin|vanillaos|zorin)
package_manager="apt" ;;
opensuse-leap|opensuse-tumbleweed|sled|sles)
package_manager="zypper" ;;
gentoo|funtoo)
package_manager="emerge" ;;
nixos)
package_manager="nix" ;;
guix)
package_manager="guix" ;;
clear-linux-os|miraclelinux|photon|solus|tencentos|tinycore|trisquel|ultramarine)
package_manager="unknown" ;; # Custom handling needed
*)
package_manager="unknown" ;;
esac
else
package_manager="unknown"
fi
;;
esac
echo "$package_manager"
} }
# Support Menu - Frontend # Main function to install dependencies based on package manager
support() { install_dependencies() {
echo -e "\033]0;SillyTavern [SUPPORT]\007" PACKAGE_MANAGER=$(detect_package_manager)
clear
echo -e "${blue_fg_strong}/ Home / Support${reset}"
echo "-------------------------------------"
echo "What would you like to do?"
echo "1. I want to report an issue"
echo "2. Documentation"
echo "3. Discord"
echo "0. Back to installer"
read -p "Choose Your Destiny: " support_choice case "$PACKAGE_MANAGER" in
apt)
# Support Menu - Backend log_message "INFO" "Detected APT on Debian/Ubuntu-based system."
case $support_choice in sudo apt update -y
1) issue_report ;; install_git
2) documentation ;; install_nodejs
3) discord ;; install_miniconda
0) installer ;; installer
*) echo -e "${yellow_fg_strong}WARNING: Invalid number. Please insert a valid number.${reset}" ;;
read -p "Press Enter to continue..." dnf|yum)
support ;; log_message "INFO" "Detected DNF/YUM on RHEL-based system."
sudo $PACKAGE_MANAGER install -y epel-release
install_git
install_nodejs
install_miniconda
installer
;;
pacman)
log_message "INFO" "Detected Pacman on Arch-based system."
sudo pacman -Sy --noconfirm
install_git
install_nodejs
install_miniconda
installer
;;
apk)
log_message "INFO" "Detected APK on Alpine Linux."
sudo apk update
install_git
install_nodejs
install_miniconda
installer
;;
zypper)
log_message "INFO" "Detected Zypper on openSUSE."
sudo zypper refresh
install_git
install_nodejs
install_miniconda
installer
;;
emerge)
log_message "INFO" "Detected Portage on Gentoo."
sudo emerge --sync
install_git
install_nodejs
install_miniconda
installer
;;
nix)
log_message "INFO" "Detected Nix Package Manager."
nix-env -iA nixpkgs.git nixpkgs.nodejs
install_miniconda
installer
;;
guix)
log_message "INFO" "Detected Guix Package Manager."
install_git
install_nodejs
install_miniconda
installer
;;
brew)
log_message "INFO" "Detected Homebrew on macOS."
if ! command -v brew &> /dev/null; then
log_message "ERROR" "Homebrew is not installed. Please install it first: https://brew.sh/"
exit 1
fi
install_git
install_nodejs
install_miniconda
installer
;;
*)
log_message "ERROR" "Unknown package manager. Please install dependencies manually."
exit 1
;;
esac esac
} }
# Check if the script is running on macOS # Startup functions
if [ "$(uname)" == "Darwin" ]; then detect_package_manager
IS_MACOS="1" install_dependencies
fi installer
# Detect the package manager and execute the appropriate installation
if [ -n "$IS_MACOS" ]; then
log_message "INFO" "${blue_fg_strong}Detected macOS system.${reset}"
# macOS
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v apt-get &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected Debian/Ubuntu-based system.${reset}"
# Debian/Ubuntu
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v yum &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected Red Hat/Fedora-based system.${reset}"
# Red Hat/Fedora
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v apk &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected Alpine Linux-based system.${reset}"
# Alpine Linux
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v pacman &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected Arch Linux-based system.${reset}"
# Arch Linux
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v emerge &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected Gentoo Linux-based system. Now you are the real CHAD${reset}"
# Gentoo Linux
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v pkg &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected pkg System${reset}"
# pkg
install_git
install_nodejs_npm
install_miniconda
installer
elif command -v zypper &>/dev/null; then
log_message "INFO" "${blue_fg_strong}Detected openSUSE system.${reset}"
# openSUSE
install_git
install_nodejs_npm
install_miniconda
installer
else
log_message "ERROR" "${red_fg_strong}Unsupported package manager. Cannot detect Linux distribution.${reset}"
exit 1
fi

File diff suppressed because it is too large Load Diff