112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Development setup script for VFX Project Management System
|
|
"""
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def run_command(command, cwd=None):
|
|
"""Run a command and return the result"""
|
|
try:
|
|
result = subprocess.run(command, shell=True, cwd=cwd, check=True, capture_output=True, text=True)
|
|
return True, result.stdout
|
|
except subprocess.CalledProcessError as e:
|
|
return False, e.stderr
|
|
|
|
def setup_backend():
|
|
"""Set up the backend environment"""
|
|
print("Setting up backend...")
|
|
backend_dir = Path("backend")
|
|
|
|
# Check if virtual environment exists
|
|
venv_dir = backend_dir / "venv"
|
|
if not venv_dir.exists():
|
|
print("Creating virtual environment...")
|
|
success, output = run_command("python -m venv venv", cwd=backend_dir)
|
|
if not success:
|
|
print(f"Failed to create virtual environment: {output}")
|
|
return False
|
|
|
|
# Install dependencies
|
|
print("Installing backend dependencies...")
|
|
if os.name == 'nt': # Windows
|
|
pip_cmd = "venv\\Scripts\\pip install -r requirements.txt"
|
|
else: # Unix-like
|
|
pip_cmd = "venv/bin/pip install -r requirements.txt"
|
|
|
|
success, output = run_command(pip_cmd, cwd=backend_dir)
|
|
if not success:
|
|
print(f"Failed to install backend dependencies: {output}")
|
|
return False
|
|
|
|
# Copy .env file if it doesn't exist
|
|
env_file = backend_dir / ".env"
|
|
env_example = backend_dir / ".env.example"
|
|
if not env_file.exists() and env_example.exists():
|
|
print("Creating .env file from example...")
|
|
env_file.write_text(env_example.read_text())
|
|
|
|
print("Backend setup complete!")
|
|
return True
|
|
|
|
def setup_frontend():
|
|
"""Set up the frontend environment"""
|
|
print("Setting up frontend...")
|
|
frontend_dir = Path("frontend")
|
|
|
|
# Install dependencies
|
|
print("Installing frontend dependencies...")
|
|
success, output = run_command("npm install", cwd=frontend_dir)
|
|
if not success:
|
|
print(f"Failed to install frontend dependencies: {output}")
|
|
return False
|
|
|
|
# Copy .env file if it doesn't exist
|
|
env_file = frontend_dir / ".env"
|
|
env_example = frontend_dir / ".env.example"
|
|
if not env_file.exists() and env_example.exists():
|
|
print("Creating .env file from example...")
|
|
env_file.write_text(env_example.read_text())
|
|
|
|
print("Frontend setup complete!")
|
|
return True
|
|
|
|
def main():
|
|
"""Main setup function"""
|
|
print("VFX Project Management System - Development Setup")
|
|
print("=" * 50)
|
|
|
|
# Check if we're in the right directory
|
|
if not Path("backend").exists() or not Path("frontend").exists():
|
|
print("Error: Please run this script from the project root directory")
|
|
sys.exit(1)
|
|
|
|
# Setup backend
|
|
if not setup_backend():
|
|
print("Backend setup failed!")
|
|
sys.exit(1)
|
|
|
|
# Setup frontend
|
|
if not setup_frontend():
|
|
print("Frontend setup failed!")
|
|
sys.exit(1)
|
|
|
|
print("\n" + "=" * 50)
|
|
print("Setup complete! To start development:")
|
|
print("\n1. Start the backend:")
|
|
print(" cd backend")
|
|
if os.name == 'nt':
|
|
print(" venv\\Scripts\\activate")
|
|
else:
|
|
print(" source venv/bin/activate")
|
|
print(" uvicorn main:app --reload")
|
|
print("\n2. Start the frontend (in a new terminal):")
|
|
print(" cd frontend")
|
|
print(" npm run dev")
|
|
print("\n3. Access the application at http://localhost:5173")
|
|
print(" API documentation at http://localhost:8000/docs")
|
|
|
|
if __name__ == "__main__":
|
|
main() |