#!/usr/bin/env bash REPO="https://github.com/TeamUltroid/Ultroid.git" CURRENT_DIR="$(pwd)" ENV_FILE_PATH=".env" DIR="/root/TeamUltroid" while [ $# -gt 0 ]; do case "$1" in --dir=*) DIR="${1#*=}" || DIR="/root/TeamUltroid" ;; --branch=*) BRANCH="${1#*=}" || BRANCH="main" ;; --env-file=*) ENV_FILE_PATH="${1#*=}" || ENV_FILE_PATH=".env" ;; --no-root) NO_ROOT=true ;; *) echo "Unknown parameter passed: $1" exit 1 ;; esac shift done check_dependencies() { # check if debian echo "Checking dependencies..." # read file with root access if ! [[ $(ls -l "/etc/sudoers" | cut -d " " -f1) =~ "r" ]]; then # check dependencies if installed echo -e "Root access not found. Checking if dependencies are installed." >&2 if ! [ -x "$(command -v python3)" ] || ! [ -x "$(command -v python)" ]; then echo -e "Python3 isn't installed. Please install python3.8 or higher to run this bot." >&2 exit 1 fi if [ $(python3 -c "import sys; print(sys.version_info[1])") -lt 8 ] || [ $(python -c "import sys; print(sys.version_info[1])") -lt 8 ]; then echo -e "Python 3.8 or higher is required to run this bot." >&2 exit 1 fi # check if any of ffmpeg, mediainfo, neofetch, git is not installed if ! command -v ffmpeg &>/dev/null || ! command -v mediainfo &>/dev/null || ! command -v neofetch &>/dev/null || ! command -v git &>/dev/null; then echo -e "Some dependencies aren't installed. Please install ffmpeg, mediainfo, neofetch and git to run this bot." >&2 exit 1 fi fi if [ -x "$(command -v apt-get)" ]; then echo -e "Installing dependencies..." # check if any of ffmpeg, mediainfo, neofetch, git is not installed via dpkg if dpkg -l | grep -q ffmpeg || dpkg -l | grep -q mediainfo || dpkg -l | grep -q neofetch || dpkg -l | grep -q git; then sudo apt-get -qq -o=Dpkg::Use-Pty=0 update sudo apt-get install -qq -o=Dpkg::Use-Pty=0 python3 python3-pip ffmpeg mediainfo neofetch git -y fi elif [ -x "$(command -v pacman)" ]; then echo -e "Installing dependencies..." if pacman -Q | grep -q ffmpeg || pacman -Q | grep -q mediainfo || pacman -Q | grep -q neofetch || pacman -Q | grep -q git; then sudo pacman -Sy python python-pip git ffmpeg mediainfo neofetch --noconfirm fi else echo -e "Unknown OS. Checking if dependecies are installed" >&2 if ! [ -x "$(command -v python3)" ] || ! [ -x "$(command -v python)" ]; then echo -e "Python3 isn't installed. Please install python3.8 or higher to run this bot." >&2 exit 1 fi if [ $(python3 -c "import sys; print(sys.version_info[1])") -lt 8 ] || [ $(python -c "import sys; print(sys.version_info[1])") -lt 8 ]; then echo -e "Python 3.8 or higher is required to run this bot." >&2 exit 1 fi if ! command -v ffmpeg &>/dev/null || ! command -v mediainfo &>/dev/null || ! command -v neofetch &>/dev/null || ! command -v git &>/dev/null; then echo -e "Some dependencies aren't installed. Please install ffmpeg, mediainfo, neofetch and git to run this bot." >&2 exit 1 fi fi } check_python() { # check if python is installed if ! command -v python3 &>/dev/null; then echo -e "Python3 isn't installed. Please install python3.8 or higher to run this bot." exit 1 elif ! command -v python &>/dev/null; then echo -e "Python3 isn't installed. Please install python3.8 or higher to run this bot." exit 1 fi if [ $(python3 -c "import sys; print(sys.version_info[1])") -lt 8 ]; then echo -e "Python 3.8 or higher is required to run this bot." exit 1 elif [ $(python -c "import sys; print(sys.version_info[1])") -lt 3 ]; then if [ $(python -c "import sys; print(sys.version_info[1])") -lt 8 ]; then echo -e "Python 3.8 or higher is required to run this bot." exit 1 fi fi } clone_repo() { # check if pyultroid, startup, plugins folders exist cd $DIR if [ -d $DIR ]; then if [ -d $DIR/.git ]; then echo -e "Updating Ultroid ${BRANCH}... " cd $DIR git pull currentbranch="$(git rev-parse --abbrev-ref HEAD)" if [ ! $BRANCH ]; then export BRANCH=$currentbranch fi case $currentbranch in $BRANCH) # do nothing ;; *) echo -e "Switching to branch ${BRANCH}... " echo -e $currentbranch git checkout $BRANCH ;; esac else rm -rf $DIR exit 1 fi if [ -d "addons" ]; then cd addons git pull fi return else if [ ! $BRANCH ]; then export BRANCH="main" fi mkdir -p $DIR echo -e "Cloning Ultroid ${BRANCH}... " git clone -b $BRANCH $REPO $DIR fi } install_requirements() { pip3 install -q --upgrade pip echo -e "\n\nInstalling requirements... " pip3 install -q --no-cache-dir -r $DIR/requirements.txt pip3 install -q -r $DIR/resources/startup/optional-requirements.txt } railways_dep() { if [ $RAILWAY_STATIC_URL ]; then echo -e "Installing YouTube dependency... " pip3 install -q yt-dlp fi } misc_install() { if [ $SETUP_PLAYWRIGHT ] then echo -e "Installing playwright." pip3 install playwright playwright install fi if [ $OKTETO_TOKEN ]; then echo -e "Installing Okteto-CLI... " curl https://get.okteto.com -sSfL | sh elif [ $VCBOT ]; then if [ -d $DIR/vcbot ]; then cd $DIR/vcbot git pull else echo -e "Cloning VCBOT.." git clone https://github.com/TeamUltroid/VcBot $DIR/vcbot fi pip3 install pytgcalls==3.0.0.dev23 && pip3 install av -q --no-binary av fi } dep_install() { echo -e "\n\nInstalling DB Requirement..." if [ $MONGO_URI ]; then echo -e " Installing MongoDB Requirements..." pip3 install -q pymongo[srv] elif [ $DATABASE_URL ]; then echo -e " Installing PostgreSQL Requirements..." pip3 install -q psycopg2-binary elif [ $REDIS_URI ]; then echo -e " Installing Redis Requirements..." pip3 install -q redis hiredis fi } main() { echo -e "Starting Ultroid Setup..." if [ -d "pyUltroid" ] && [ -d "resources" ] && [ -d "plugins" ]; then DIR=$CURRENT_DIR fi if [ -f $ENV_FILE_PATH ] then set -a source <(cat $ENV_FILE_PATH | sed -e '/^#/d;/^\s*$/d' -e "s/'/'\\\''/g" -e "s/=\(.*\)/='\1'/g") set +a cp $ENV_FILE_PATH .env fi (check_dependencies) (check_python) (clone_repo) (install_requirements) (railways_dep) (dep_install) (misc_install) echo -e "\n\nSetup Completed." } if [ $NO_ROOT ]; then echo -e "Running with non root" main return 0 elif [ -t 0 ]; then unameOut="$(uname -s)" case "${unameOut}" in Linux*) machine=Linux;; Darwin*) machine=Mac;; CYGWIN*) machine=Cygwin;; MINGW*) machine=MinGw;; *) machine="UNKNOWN:${unameOut}" esac if machine != "Linux"; then echo -e "This script is only for Linux. Please use the Windows installer." exit 1 fi # check if sudo is installed if ! command -v sudo &>/dev/null; then echo -e "Sudo isn't installed. Please install sudo to run this bot." exit 1 fi sudo echo "Sudo permission granted." main else echo "Not an interactive terminal, skipping sudo." # run main function main fi