| #!/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() { |
| |
| echo "Checking dependencies..." |
| |
| if ! [[ $(ls -l "/etc/sudoers" | cut -d " " -f1) =~ "r" ]]; then |
| |
| 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 |
| |
| 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..." |
| |
| 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() { |
| |
| 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() { |
| |
| 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) |
| |
| ;; |
| *) |
| 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 |
| |
| 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." |
| |
| main |
| fi |
|
|