12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/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
- "
|