mirror of
https://github.com/CosmicScale/PSBBN-Definitive-English-Patch.git
synced 2025-09-12 20:09:33 +02:00
113 lines
4.2 KiB
Bash
Executable File
113 lines
4.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
export LC_ALL=en_US.UTF-8
|
|
|
|
trap 'echo; exit 130' INT
|
|
|
|
TOOLKIT_PATH="$(pwd)"
|
|
SOURCES_LIST="/etc/apt/sources.list"
|
|
LOG_FILE="${TOOLKIT_PATH}/logs/setup.log"
|
|
|
|
error_msg() {
|
|
echo
|
|
echo
|
|
echo "[X] Error: $1" | tee -a "${LOG_FILE}"
|
|
echo
|
|
read -n 1 -s -r -p "Press any key to exit..."
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
spinner() {
|
|
local pid=$1
|
|
local message=$2
|
|
local delay=0.1
|
|
local spinstr='|/-\'
|
|
|
|
# Print initial spinner + message
|
|
printf "\r[%c] %s" "${spinstr:0:1}" "$message"
|
|
|
|
while kill -0 "$pid" 2>/dev/null; do
|
|
for i in $(seq 0 3); do
|
|
printf "\r[%c] %s" "${spinstr:i:1}" "$message"
|
|
sleep $delay
|
|
done
|
|
done
|
|
|
|
# Replace spinner with check mark when done
|
|
printf "\r[✓] %s\n" "$message"
|
|
}
|
|
|
|
clear
|
|
|
|
mkdir -p "${TOOLKIT_PATH}/logs" >/dev/null 2>&1
|
|
|
|
# Clean sources.list if needed
|
|
if [[ -f "$SOURCES_LIST" ]]; then
|
|
if grep -q 'deb cdrom' "$SOURCES_LIST"; then
|
|
echo "Removing 'deb cdrom' line from $SOURCES_LIST..." >>"${LOG_FILE}"
|
|
sudo sed -i '/deb cdrom/d' "$SOURCES_LIST" >> "${LOG_FILE}" 2>&1 || error_msg "Failed to clean $SOURCES_LIST"
|
|
echo "'deb cdrom' line removed." >> "${LOG_FILE}"
|
|
fi
|
|
fi
|
|
|
|
cat << "EOF"
|
|
_____ _
|
|
/ ___| | |
|
|
\ `--. ___| |_ _ _ _ __
|
|
`--. \/ _ \ __| | | | '_ \
|
|
/\__/ / __/ |_| |_| | |_) |
|
|
\____/ \___|\__|\__,_| .__/
|
|
| |
|
|
|_|
|
|
|
|
|
|
Installing Dependences:
|
|
EOF
|
|
|
|
# Detect package manager and install packages
|
|
if [ -x "$(command -v apt-get)" ]; then
|
|
sudo apt-get -q update && sudo apt-get install -y axel imagemagick xxd python3 python3-venv python3-pip nodejs npm bc rsync curl zip unzip wget ffmpeg lvm2 libfuse2 dosfstools e2fsprogs libc-bin exfatprogs exfat-fuse util-linux parted chromium 2>&1 | tee -a "${LOG_FILE}"
|
|
# Or if user is on Fedora-based system, do this instead
|
|
elif [ -x "$(command -v dnf)" ]; then
|
|
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm 2>&1 | tee -a "${LOG_FILE}"
|
|
sudo dnf install -y gcc axel ImageMagick xxd python3 python3-devel python3-pip nodejs npm bc rsync curl zip unzip wget ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted chromium 2>&1 | tee -a "${LOG_FILE}"
|
|
# Or if user is on Arch-based system, do this instead
|
|
elif [ -x "$(command -v pacman)" ]; then
|
|
sudo pacman -S --needed --noconfirm axel imagemagick xxd python pyenv python-pip nodejs npm bc rsync curl zip unzip wget ffmpeg lvm2 fuse2 dosfstools e2fsprogs glibc exfatprogs util-linux parted chromium 2>&1 | tee -a "${LOG_FILE}"
|
|
else
|
|
error_msg "No supported package manager found (apt-get, dnf, pacman)."
|
|
fi
|
|
|
|
if [ $? -ne 0 ]; then
|
|
error_msg "Package installation failed. Please update your OS and try again." "See $LOG_FILE for details."
|
|
else
|
|
echo "[✓] Packages checked/installed." | tee -a "${LOG_FILE}"
|
|
fi
|
|
|
|
# Python virtual environment setup
|
|
(
|
|
python3 -m venv scripts/venv >> "${LOG_FILE}" 2>&1 || error_msg "Failed to create Python virtual environment."
|
|
source scripts/venv/bin/activate || error_msg "Failed to activate the Python virtual environment."
|
|
pip install lz4 natsort mutagen tqdm >> "${LOG_FILE}" || error_msg "Failed to install Python dependencies."
|
|
deactivate
|
|
) &
|
|
PID=$!
|
|
spinner $PID "Setting up Python virtual environment and installing dependencies..."
|
|
|
|
cd scripts || error_msg "Failed to enter scripts directory."
|
|
|
|
# Puppeteer install
|
|
(
|
|
npm_config_progress=false npm install puppeteer --silent >> "${LOG_FILE}" 2>&1 || error_msg "Failed to install puppeteer."
|
|
) &
|
|
PID=$!
|
|
spinner $PID "Installing Puppeteer via npm..."
|
|
|
|
echo "[✓] Puppeteer installed successfully." | tee -a "${LOG_FILE}"
|
|
|
|
echo
|
|
echo -n "[✓] Setup completed successfully!" | tee -a "${LOG_FILE}"
|
|
sleep 3
|
|
echo| tee -a "${LOG_FILE}"
|
|
|