Initial working version
This commit is contained in:
commit
ec1c5958ce
33 changed files with 4547 additions and 0 deletions
113
scripts/setup_env.py
Normal file
113
scripts/setup_env.py
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
"""
|
||||
Environment setup helper script
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
from typing import List, Dict, Any, Optional
|
||||
import subprocess
|
||||
import platform
|
||||
|
||||
def check_python_version() -> bool:
|
||||
"""Check if Python version is compatible"""
|
||||
if sys.version_info < (3, 7):
|
||||
print(f"Error: Python 3.7 or higher is required. You are using {platform.python_version()}")
|
||||
return False
|
||||
print(f"Python version OK: {platform.python_version()}")
|
||||
return True
|
||||
|
||||
def create_env_file() -> bool:
|
||||
"""Create a .env file from .env.example if it doesn't exist"""
|
||||
example_path = os.path.join("config", ".env.example")
|
||||
env_path = ".env"
|
||||
|
||||
# Check if .env already exists
|
||||
if os.path.exists(env_path):
|
||||
print(f"Info: {env_path} file already exists")
|
||||
return True
|
||||
|
||||
# Check if .env.example exists
|
||||
if not os.path.exists(example_path):
|
||||
print(f"Creating default .env file (no example found at {example_path})")
|
||||
with open(env_path, "w") as f:
|
||||
f.write("# Twitch API credentials\n")
|
||||
f.write("TWITCH_USERNAME=your_bot_username\n")
|
||||
f.write("TWITCH_CLIENT_ID=your_client_id\n")
|
||||
f.write("TWITCH_CLIENT_SECRET=your_client_secret\n")
|
||||
f.write("TWITCH_CHANNEL=your_channel\n")
|
||||
print(f"Created default {env_path} file")
|
||||
return True
|
||||
|
||||
# Copy .env.example to .env
|
||||
try:
|
||||
shutil.copy(example_path, env_path)
|
||||
print(f"Created {env_path} file from {example_path}")
|
||||
print(f"Please edit {env_path} to set your Twitch API credentials")
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error creating .env file: {e}")
|
||||
return False
|
||||
|
||||
def install_dependencies() -> bool:
|
||||
"""Install Python dependencies from requirements.txt"""
|
||||
req_path = "requirements.txt"
|
||||
|
||||
if not os.path.exists(req_path):
|
||||
print(f"Error: {req_path} not found")
|
||||
return False
|
||||
|
||||
try:
|
||||
print(f"Installing dependencies from {req_path}...")
|
||||
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", req_path])
|
||||
print("Dependencies installed successfully")
|
||||
return True
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error installing dependencies: {e}")
|
||||
return False
|
||||
|
||||
def create_directories() -> bool:
|
||||
"""Create necessary directories if they don't exist"""
|
||||
dirs = [
|
||||
"data/cache",
|
||||
"data/sounds"
|
||||
]
|
||||
|
||||
for directory in dirs:
|
||||
if not os.path.exists(directory):
|
||||
try:
|
||||
os.makedirs(directory, exist_ok=True)
|
||||
print(f"Created directory: {directory}")
|
||||
except Exception as e:
|
||||
print(f"Error creating directory {directory}: {e}")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def setup_environment() -> bool:
|
||||
"""
|
||||
Run all setup steps
|
||||
Returns True if all steps succeeded
|
||||
"""
|
||||
steps = [
|
||||
check_python_version,
|
||||
create_directories,
|
||||
create_env_file,
|
||||
install_dependencies
|
||||
]
|
||||
|
||||
success = True
|
||||
for step in steps:
|
||||
if not step():
|
||||
success = False
|
||||
|
||||
return success
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Setting up environment for stream-interact...")
|
||||
if setup_environment():
|
||||
print("\nSetup completed successfully!")
|
||||
print("\nTo run the bot, use: python main.py")
|
||||
print("To see available options, use: python main.py --help")
|
||||
else:
|
||||
print("\nSetup completed with errors. Please check the messages above.")
|
||||
sys.exit(1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue