File size: 3,107 Bytes
50a7bf0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python3
"""

Development setup script.

Creates necessary directories and validates configuration.

"""

import os
import sys
from pathlib import Path


def create_directories():
    """Create necessary directories for the application."""
    directories = [
        "uploads",
        "videos", 
        "logs",
        "data",
    ]
    
    for directory in directories:
        Path(directory).mkdir(exist_ok=True)
        print(f"βœ“ Created directory: {directory}")


def check_env_file():
    """Check if .env file exists and create from example if not."""
    env_file = Path(".env")
    env_example = Path(".env.example")
    
    if not env_file.exists():
        if env_example.exists():
            # Copy example to .env
            env_file.write_text(env_example.read_text())
            print("βœ“ Created .env file from .env.example")
            print("⚠️  Please update the .env file with your actual configuration values")
        else:
            print("❌ .env.example file not found")
            return False
    else:
        print("βœ“ .env file already exists")
    
    return True


def validate_required_env_vars():
    """Validate that required environment variables are set."""
    from dotenv import load_dotenv
    
    load_dotenv()
    
    required_vars = [
        "CLERK_SECRET_KEY",
        "CLERK_PUBLISHABLE_KEY", 
        "SECRET_KEY",
    ]
    
    missing_vars = []
    for var in required_vars:
        if not os.getenv(var) or os.getenv(var) == f"your_{var.lower()}_here":
            missing_vars.append(var)
    
    if missing_vars:
        print("❌ Missing required environment variables:")
        for var in missing_vars:
            print(f"   - {var}")
        print("\nPlease update your .env file with actual values.")
        return False
    
    print("βœ“ All required environment variables are set")
    return True


def main():
    """Main setup function."""
    print("πŸš€ Setting up FastAPI Video Backend development environment...\n")
    
    # Create directories
    create_directories()
    print()
    
    # Check .env file
    if not check_env_file():
        sys.exit(1)
    print()
    
    # Validate environment variables
    try:
        if not validate_required_env_vars():
            print("\n⚠️  Setup completed with warnings. Please fix the issues above.")
            sys.exit(1)
    except ImportError:
        print("⚠️  python-dotenv not installed. Skipping environment validation.")
        print("   Install dependencies with: pip install -e .")
    
    print("\nβœ… Development environment setup completed!")
    print("\nNext steps:")
    print("1. Install dependencies: pip install -e .")
    print("2. Update .env file with your actual configuration values")
    print("3. Start Redis server: redis-server")
    print("4. Run the application: python -m src.app.main")
    print("5. Visit http://localhost:8000/docs for API documentation")


if __name__ == "__main__":
    main()