1
+ #! /bin/bash
2
+
3
+ set -e # Exit on any error
4
+
5
+ echo " 🚀 Setting up development environment..."
6
+
7
+ # Colors for output
8
+ RED=' \033[0;31m'
9
+ GREEN=' \033[0;32m'
10
+ YELLOW=' \033[1;33m'
11
+ BLUE=' \033[0;34m'
12
+ NC=' \033[0m' # No Color
13
+
14
+ # Function to print colored output
15
+ print_status () {
16
+ echo -e " ${BLUE} [INFO]${NC} $1 "
17
+ }
18
+
19
+ print_success () {
20
+ echo -e " ${GREEN} [SUCCESS]${NC} $1 "
21
+ }
22
+
23
+ print_warning () {
24
+ echo -e " ${YELLOW} [WARNING]${NC} $1 "
25
+ }
26
+
27
+ print_error () {
28
+ echo -e " ${RED} [ERROR]${NC} $1 "
29
+ }
30
+
31
+ # Check if running as root
32
+ if [[ $EUID -eq 0 ]]; then
33
+ print_warning " Running as root. Some operations may behave differently."
34
+ fi
35
+
36
+ # Update package lists
37
+ print_status " Updating package lists..."
38
+ if command -v apt-get & > /dev/null; then
39
+ sudo apt-get update -qq
40
+ elif command -v yum & > /dev/null; then
41
+ sudo yum check-update || true
42
+ elif command -v dnf & > /dev/null; then
43
+ sudo dnf check-update || true
44
+ elif command -v pacman & > /dev/null; then
45
+ sudo pacman -Sy
46
+ else
47
+ print_warning " Package manager not detected. Manual installation may be required."
48
+ fi
49
+
50
+ # Install essential tools
51
+ print_status " Installing essential development tools..."
52
+ if command -v apt-get & > /dev/null; then
53
+ sudo apt-get install -y curl wget git build-essential software-properties-common
54
+ elif command -v yum & > /dev/null; then
55
+ sudo yum groupinstall -y " Development Tools"
56
+ sudo yum install -y curl wget git
57
+ elif command -v dnf & > /dev/null; then
58
+ sudo dnf groupinstall -y " Development Tools"
59
+ sudo dnf install -y curl wget git
60
+ elif command -v pacman & > /dev/null; then
61
+ sudo pacman -S --noconfirm curl wget git base-devel
62
+ fi
63
+
64
+ # Check if Python3 is available
65
+ print_status " Checking Python installation..."
66
+ if ! command -v python3 & > /dev/null; then
67
+ print_warning " Python3 not found. Installing Python3..."
68
+
69
+ if command -v apt-get & > /dev/null; then
70
+ sudo apt-get install -y python3 python3-pip python3-venv python3-dev
71
+ elif command -v yum & > /dev/null; then
72
+ sudo yum install -y python3 python3-pip python3-venv python3-devel
73
+ elif command -v dnf & > /dev/null; then
74
+ sudo dnf install -y python3 python3-pip python3-venv python3-devel
75
+ elif command -v pacman & > /dev/null; then
76
+ sudo pacman -S --noconfirm python python-pip python-virtualenv
77
+ else
78
+ print_error " Could not install Python3. Please install manually."
79
+ exit 1
80
+ fi
81
+ else
82
+ print_success " Python3 is already installed: $( python3 --version) "
83
+ fi
84
+
85
+ # Check if pip is available
86
+ if ! command -v pip3 & > /dev/null && ! python3 -m pip --version & > /dev/null; then
87
+ print_warning " pip not found. Installing pip..."
88
+
89
+ if command -v apt-get & > /dev/null; then
90
+ sudo apt-get install -y python3-pip
91
+ elif command -v yum & > /dev/null; then
92
+ sudo yum install -y python3-pip
93
+ elif command -v dnf & > /dev/null; then
94
+ sudo dnf install -y python3-pip
95
+ else
96
+ # Download and install pip manually
97
+ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
98
+ python3 get-pip.py
99
+ rm get-pip.py
100
+ fi
101
+ else
102
+ print_success " pip is available"
103
+ fi
104
+
105
+ # Install FFmpeg (required for media processing)
106
+ print_status " Checking FFmpeg installation..."
107
+ if ! command -v ffmpeg & > /dev/null; then
108
+ print_warning " FFmpeg not found. Installing FFmpeg..."
109
+
110
+ if command -v apt-get & > /dev/null; then
111
+ sudo apt-get install -y ffmpeg
112
+ elif command -v yum & > /dev/null; then
113
+ sudo yum install -y ffmpeg
114
+ elif command -v dnf & > /dev/null; then
115
+ sudo dnf install -y ffmpeg
116
+ elif command -v pacman & > /dev/null; then
117
+ sudo pacman -S --noconfirm ffmpeg
118
+ else
119
+ print_error " Could not install FFmpeg. Please install manually."
120
+ exit 1
121
+ fi
122
+ else
123
+ print_success " FFmpeg is already installed: $( ffmpeg -version | head -n1) "
124
+ fi
125
+
126
+ # Create virtual environment
127
+ VENV_NAME=" venv"
128
+ print_status " Creating virtual environment..."
129
+
130
+ if [ -d " $VENV_NAME " ]; then
131
+ print_warning " Virtual environment already exists. Removing old environment..."
132
+ rm -rf " $VENV_NAME "
133
+ fi
134
+
135
+ python3 -m venv " $VENV_NAME "
136
+ print_success " Virtual environment created: $VENV_NAME "
137
+
138
+ # Activate virtual environment
139
+ print_status " Activating virtual environment..."
140
+ source " $VENV_NAME /bin/activate"
141
+ print_success " Virtual environment activated"
142
+
143
+ # Upgrade pip
144
+ print_status " Upgrading pip..."
145
+ python -m pip install --upgrade pip
146
+
147
+ # Install requirements
148
+ if [ -f " requirements.txt" ]; then
149
+ print_status " Installing requirements from requirements.txt..."
150
+ python -m pip install -r requirements.txt
151
+ print_success " Requirements installed successfully"
152
+ else
153
+ print_error " requirements.txt not found!"
154
+ exit 1
155
+ fi
156
+
157
+ # Install pre-commit if not already installed
158
+ if ! command -v pre-commit & > /dev/null; then
159
+ print_status " Installing pre-commit..."
160
+ python -m pip install pre-commit
161
+ print_success " pre-commit installed"
162
+ fi
163
+
164
+ # Install pre-commit hooks
165
+ if [ -f " .pre-commit-config.yaml" ]; then
166
+ print_status " Installing pre-commit hooks..."
167
+ pre-commit install
168
+ print_success " Pre-commit hooks installed"
169
+ fi
170
+
171
+ print_success " 🎉 Development environment setup complete!"
172
+ print_status " To activate the virtual environment in the future, run:"
173
+ echo " source $VENV_NAME /bin/activate"
174
+ print_status " To deactivate the virtual environment, run:"
175
+ echo " deactivate"
176
+
177
+ # Display environment info
178
+ echo " "
179
+ print_status " Environment Information:"
180
+ echo " Python: $( python --version) "
181
+ echo " Pip: $( pip --version) "
182
+ echo " Virtual Environment: $( pwd) /$VENV_NAME "
183
+ if command -v ffmpeg & > /dev/null; then
184
+ echo " FFmpeg: $( ffmpeg -version | head -n1 | cut -d' ' -f3) "
185
+ fi
186
+ if command -v redis-server & > /dev/null; then
187
+ echo " Redis: Available"
188
+ fi
189
+
190
+ echo " "
191
+ print_success " You can now start developing! 🚀"
0 commit comments