File size: 8,092 Bytes
618430a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 |
#!/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
|