Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install script patch #1994 #2029

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 69 additions & 67 deletions install.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
#!/bin/bash
#!/bin/bash

# If the install fails, then print an error and exit.
function install_fail() {
echo "Installation failed"
exit 1
}
echo "Installation failed"
exit 1
}

# This is the help fuction. It helps users withe the options
function Help(){
echo "Usage: install.sh [option]"
echo "Options:"
echo " -h: Show this help message and exit"
echo " -d: Install only dependencies"
echo " -p: Install only python dependencies (including playwright)"
echo " -b: Install just the bot"
echo " -l: Install the bot and the python dependencies"
}
# This is the help fuction. It helps users with the options
# This is the help fuction. It helps users with the options
function Help() {
echo "Usage: install.sh [option]"
echo "Options:"
echo -e "\t-h: Show this help message and exit"
echo -e "\t-d: Install only dependencies"
echo -e "\t-p: Install only python dependencies (including playwright)"
echo -e "\t-b: Install just the bot"
echo -e "\t-l: Install the bot and the python dependencies"
}

# Options
while getopts ":hydpbl" option; do
Expand All @@ -42,15 +43,15 @@ while getopts ":hydpbl" option; do
:)
echo "Option -$OPTARG requires an argument." >&2 Help exit 1;;
esac
done
done

# Install dependencies for MacOS
function install_macos(){
function install_macos() {
# Check if homebrew is installed
if [ ! command -v brew &> /dev/null ]; then
echo "Installing Homebrew"
# if it's is not installed, then install it in a NONINTERACTIVE way
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
# Check for what arcitecture, so you can place path.
if [[ "uname -m" == "x86_64" ]]; then
echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
Expand All @@ -61,80 +62,81 @@ function install_macos(){
echo "Homebrew is already installed"
fi
# Install the required packages
echo "Installing required Packages"
echo "Installing required Packages"
if [! command --version python3 &> /dev/null ]; then
echo "Installing python3"
brew install [email protected]
else
echo "python3 already installed."
fi
brew install tcl-tk python-tk
}
}

# Function to install for arch (and other forks like manjaro)
function install_arch(){
function install_arch() {
echo "Installing required packages"
sudo pacman -S --needed python3 tk git && python3 -m ensurepip unzip || install_fail
}
sudo pacman -S --needed python3 python-pipx tk git unzip
python -m ensurepip || install_fail
}

# Function to install for debian (and ubuntu)
function install_deb(){
function install_deb() {
echo "Installing required packages"
sudo apt install python3 python3-dev python3-tk python3-pip unzip || install_fail
}
sudo apt install python3 pipx python3-dev python3-tk python3-pip unzip || install_fail
}

# Function to install for fedora (and other forks)
function install_fedora(){
echo "Installing required packages"
sudo dnf install python3 python3-tkinter python3-pip python3-devel unzip || install_fail
}
function install_fedora() {
echo "Installing required packages"
sudo dnf install python3 pipx python3-tkinter python3-pip python3-devel unzip || install_fail
}

# Function to install for centos (and other forks based on it)
function install_centos(){
function install_centos() {
echo "Installing required packages"
sudo yum install -y python3 || install_fail
sudo yum install -y python3-tkinter epel-release python3-pip unzip|| install_fail
}
sudo yum install -y python3-tkinter pipx epel-release python3-pip unzip python3 || install_fail
}

function get_the_bot(){
echo "Downloading the bot"
function get_the_bot() {
echo "Downloading the bot"
rm -rf RedditVideoMakerBot-master
curl -sL https://github.com/elebumm/RedditVideoMakerBot/archive/refs/heads/master.zip -o master.zip
unzip master.zip
rm -rf master.zip
}
}

#install python dependencies
function install_python_dep(){
function install_python_dep() {
# tell the user that the script is going to install the python dependencies
echo "Installing python dependencies"
# cd into the directory
cd RedditVideoMakerBot-master
echo "Installing python dependencies"
# install the dependencies
pip3 install -r requirements.txt
# cd out
cd ..
}
DEP_LIST=./RedditVideoMakerBot-master/requirements.txt
if [[ -f $DEP_LIST ]]; then
while read -r DEPS; do
pipx install $DEPS
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not tested on other distros, but on arch at least, pipx install packagename prints out an error for most packages:

No apps associated with package packagename. Try again with '--include-deps' to include apps of dependent
packages, which are listed above. If you are attempting to install a library, pipx should not be used.
Consider using pip or a similar tool instead.

done < "$DEP_LIST"
fi
}

# install playwright function
function install_playwright(){
# tell the user that the script is going to install playwright
function install_playwright() {
# tell the user that the script is going to install playwright
echo "Installing playwright"
# cd into the directory where the script is downloaded
cd RedditVideoMakerBot-master
# run the install script
python3 -m playwright install
python3 -m playwright install-deps
pipx run playwright install
pipx run playwright install-deps
# give a note
printf "Note, if these gave any errors, playwright may not be officially supported on your OS, check this issues page for support\nhttps://github.com/microsoft/playwright/issues"
if [ -x "$(command -v pacman)" ]; then
printf "It seems you are on and Arch based distro.\nTry installing these from the AUR for playwright to run:\nenchant1.6\nicu66\nlibwebp052\n"
fi
cd ..
}
}

# Install depndencies
function install_deps(){
function install_deps() {
# if the platform is mac, install macos
if [ "$(uname)" == "Darwin" ]; then
install_macos || install_fail
Expand Down Expand Up @@ -164,30 +166,30 @@ https://github.com/elebumm/RedditVideoMakerBot"
}

# Main function
function install_main(){
function install_main() {
# Print that are installing
echo "Installing..."
# if -y (assume yes) continue
echo "Installing..."
# if -y (assume yes) continue
if [[ ASSUME_YES -eq 1 ]]; then
echo "Assuming yes"
# else, ask if they want to continue
else
echo "Continue? (y/n)"
read answer
echo "Continue? (y/n)"
read answer
# if the answer is not yes, then exit
if [ "$answer" != "y" ]; then
echo "Aborting"
echo "Aborting"
exit 1
fi
fi
fi
# if the -d (only dependencies) options is selected install just the dependencies
if [[ DEPS_ONLY -eq 1 ]]; then
echo "Installing only dependencies"
echo "Installing only dependencies"
install_deps
elif [[ PYTHON_ONLY -eq 1 ]]; then
# if the -p (only python dependencies) options is selected install just the python dependencies and playwright
echo "Installing only python dependencies"
install_python_dep
echo "Installing only python dependencies"
install_python_dep
install_playwright
# if the -b (only the bot) options is selected install just the bot
elif [[ JUST_BOT -eq 1 ]]; then
Expand All @@ -200,26 +202,26 @@ function install_main(){
install_python_dep
# else, install everything
else
echo "Installing all"
install_deps
get_the_bot
echo "Installing all"
install_deps
get_the_bot
install_python_dep
install_playwright
fi

DIR="./RedditVideoMakerBot-master"
if [ -d "$DIR" ]; then
printf "\nThe bot is installed, want to run it?"
# if -y (assume yes) continue
# if -y (assume yes) continue
if [[ ASSUME_YES -eq 1 ]]; then
echo "Assuming yes"
# else, ask if they want to continue
else
echo "Continue? (y/n)"
read answer
echo "Continue? (y/n)"
read answer
# if the answer is not yes, then exit
if [ "$answer" != "y" ]; then
echo "Aborting"
echo "Aborting"
exit 1
fi
fi
Expand Down