#!/bin/bash # set -e # Exit immediately if any command exits with a non-zero status check_venv() { # Check if the venv module is available if python3 -c "import venv" &> /dev/null; then return 0 else echo "The 'venv' module is not available. Please ensure you are using Python 3.3 or later." return 1 fi } create_venv() { python3 -m venv env } activate_venv() { source env/bin/activate } install_dependencies() { pip install --upgrade pip || { echo "Failed to upgrade pip"; exit 1; } pip install gunicorn || { echo "Failed to install Gunicorn"; exit 1; } pip install -e . || { echo "Failed to install dependencies"; exit 1; } } initialize_db() { # Create the database. This also populates it with some goals and votes from the default rewards.py export FLASK_APP=ownchatbot if python -m flask init-db; then echo "Database initialized successfully." else echo "Failed to initialize the database. Please check for errors." exit 1 # Exit the script with a non-zero status fi } generate_key() { KEY=$(< /dev/urandom tr -dc 'A-Za-z0-9' | head -c 32) echo "$KEY" } update_config() { # Generate keys for SECRET_KEY and MGMT_AUTH local key_name="$1" local key_value="$2" local bak_file="instance/config.py.bak" # Update the config file if sed -i.bak "s|$key_name = ''|$key_name = '$key_value'|" "instance/config.py"; then echo "Updated $key_name successfully." rm "$bak_file" # Remove the .bak file if the update was successful else echo "Failed to update $key_name. Backup file remains." exit 1 # Exit the script with a non-zero status fi } if check_venv; then create_venv else exit 1 fi activate_venv install_dependencies initialize_db deactivate cp ownchatbot/defaults/*py instance/ # Copy the default config files into the instance folder SECRET_KEY=$(generate_key) update_config "SECRET_KEY" "$SECRET_KEY" MGMT_AUTH=$(generate_key) update_config "MGMT_AUTH" "$MGMT_AUTH" read -p "Please enter the port number you would like OwnchatBot to listen on: " OCB_PORT echo " You're ready to start OwnchatBot! Run: env/bin/python -m gunicorn --error-logfile ownchatbot.log -b 0.0.0.0:$OCB_PORT -w 1 'ownchatbot:create_app()' To configure your bot, go to: http://localhost:$OCB_PORT/mgmt?auth=$MGMT_AUTH "