-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathinstall_mac.sh
More file actions
214 lines (183 loc) · 10.2 KB
/
Copy pathinstall_mac.sh
File metadata and controls
214 lines (183 loc) · 10.2 KB
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#!/bin/bash
# VoxFlow — Instalacja macOS (Intel & Apple Silicon)
# by AI Evolution Polska | Open Source
# ─────────────────────────────────────────────────────────────────
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m'
echo ""
echo -e "${CYAN}${BOLD}"
echo " ╔══════════════════════════════════════════════════════╗"
echo " ║ VoxFlow — Instalacja macOS ║"
echo " ║ by AI Evolution Polska | Open Source ║"
echo " ╚══════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
# ─── Check macOS ────────────────────────────────────────────────
if [[ "$OSTYPE" != "darwin"* ]]; then
echo -e "${RED}❌ Ten skrypt jest przeznaczony dla macOS.${NC}"
echo " Dla Windows użyj install.bat"
exit 1
fi
ARCH=$(uname -m)
echo -e " ${CYAN}Architektura:${NC} $ARCH"
if [[ "$ARCH" == "arm64" ]]; then
echo -e " ${GREEN}✅ Apple Silicon (M1/M2/M3) wykryty${NC}"
else
echo -e " ${GREEN}✅ Intel Mac wykryty${NC}"
fi
# ─── Check Homebrew ─────────────────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 1: Sprawdzanie Homebrew..."
echo "══════════════════════════════════════════════════════"
echo ""
if ! command -v brew &>/dev/null; then
echo -e "${YELLOW} ℹ️ Homebrew nie znaleziony. Instaluję...${NC}"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Add brew to PATH for Apple Silicon
if [[ "$ARCH" == "arm64" ]]; then
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> "$HOME/.zprofile"
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
echo -e "${GREEN} ✅ Homebrew zainstalowany${NC}"
else
echo -e "${GREEN} ✅ Homebrew już zainstalowany${NC}"
fi
# ─── Install PortAudio (needed by sounddevice) ──────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 2: Instalacja bibliotek audio (portaudio)..."
echo "══════════════════════════════════════════════════════"
echo ""
# Detect Homebrew prefix for portaudio lib path
BREW_PREFIX=$(brew --prefix 2>/dev/null || echo "/usr/local")
if brew list portaudio &>/dev/null; then
echo -e "${GREEN} ✅ portaudio już zainstalowany${NC}"
else
brew install portaudio
echo -e "${GREEN} ✅ portaudio zainstalowany${NC}"
fi
# Export portaudio path so sounddevice can find the dylib
export DYLD_LIBRARY_PATH="${BREW_PREFIX}/lib:${DYLD_LIBRARY_PATH:-}"
# ─── Check Python 3.9+ ─────────────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 3: Sprawdzanie Python 3.9+..."
echo "══════════════════════════════════════════════════════"
echo ""
PYTHON_CMD=""
for cmd in python3.12 python3.11 python3.10 python3.9 python3; do
if command -v $cmd &>/dev/null; then
VERSION=$($cmd --version 2>&1 | awk '{print $2}')
MAJOR=$(echo $VERSION | cut -d. -f1)
MINOR=$(echo $VERSION | cut -d. -f2)
if [[ $MAJOR -eq 3 && $MINOR -ge 9 ]]; then
PYTHON_CMD=$cmd
echo -e "${GREEN} ✅ Python $VERSION — używam $cmd${NC}"
break
fi
fi
done
if [[ -z "$PYTHON_CMD" ]]; then
echo -e "${YELLOW} ℹ️ Python 3.9+ nie znaleziony. Instaluję przez Homebrew...${NC}"
brew install python@3.11
PYTHON_CMD="python3.11"
echo -e "${GREEN} ✅ Python 3.11 zainstalowany${NC}"
fi
# ─── Create venv ────────────────────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 4: Tworzenie środowiska wirtualnego..."
echo "══════════════════════════════════════════════════════"
echo ""
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
if [[ -d venv ]]; then
echo -e " ${CYAN}ℹ️ Środowisko venv już istnieje${NC}"
else
$PYTHON_CMD -m venv venv
echo -e "${GREEN} ✅ Środowisko venv stworzone${NC}"
fi
source venv/bin/activate
# ─── Install requirements ────────────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 5: Instalacja wymaganych pakietów..."
echo " (pierwsze uruchomienie może potrwać kilka minut)"
echo "══════════════════════════════════════════════════════"
echo ""
pip install --upgrade pip --quiet
pip install -r requirements.txt --quiet
# Install pynput as macOS hotkey fallback (keyboard lib needs root on macOS)
pip install pynput --quiet 2>/dev/null || true
echo -e "${GREEN} ✅ Pakiety zainstalowane${NC}"
# Ensure Tkinter is available — install python-tk via Homebrew if missing
python -c "import tkinter" 2>/dev/null || {
echo -e "${YELLOW} ℹ️ Tkinter nie znaleziony. Instaluję python-tk@3.11...${NC}"
brew install python-tk@3.11 2>/dev/null || brew install python-tk 2>/dev/null || true
echo -e " ⚠️ Jeśli Tkinter nadal nie działa, uruchom: brew install python-tk@3.11"
}
# ─── Verify ─────────────────────────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 6: Weryfikacja instalacji..."
echo "══════════════════════════════════════════════════════"
echo ""
if python -m voxflow.main --test; then
echo -e "${GREEN} ✅ Weryfikacja zakończona pomyślnie${NC}"
else
echo -e "${YELLOW} ⚠️ Weryfikacja z ostrzeżeniami — sprawdź błędy powyżej.${NC}"
echo " Typowe problemy:"
echo " • tkinter: brew install python-tk@3.11"
echo " • portaudio: brew install portaudio"
echo " • HotKey: dodaj Terminal do Accessibility w Ustawieniach"
fi
# ─── Create launcher ─────────────────────────────────────────────
echo ""
echo "══════════════════════════════════════════════════════"
echo " KROK 7: Tworzenie skrótu uruchamiania..."
echo "══════════════════════════════════════════════════════"
echo ""
LAUNCHER="$SCRIPT_DIR/VoxFlow.command"
cat > "$LAUNCHER" << 'EOF'
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
source venv/bin/activate
python -m voxflow.main
EOF
chmod +x "$LAUNCHER"
echo -e "${GREEN} ✅ Launcher VoxFlow.command stworzony${NC}"
# ─── Accessibility warning (macOS keyboard hook) ─────────────────
echo ""
echo -e "${YELLOW} ⚠️ WAŻNA INFORMACJA — Uprawnienia Accessibility:${NC}"
echo ""
echo " Aby globalny hotkey (np. F2) działał we WSZYSTKICH aplikacjach,"
echo " musisz nadać VoxFlow uprawnienia Accessibility:"
echo ""
echo " 1. Otwórz: Apple Menu → System Settings → Privacy & Security"
echo " 2. Kliknij: Accessibility"
echo " 3. Dodaj Terminal lub VoxFlow.command do listy"
echo ""
echo " Bez tych uprawnień: hotkey działa tylko gdy VoxFlow jest na pierwszym planie."
echo ""
# ─── Done ────────────────────────────────────────────────────────
echo "══════════════════════════════════════════════════════"
echo -e "${GREEN}${BOLD} ✅ VoxFlow zainstalowany pomyślnie!${NC}"
echo ""
echo " Uruchom aplikację:"
echo " • Kliknij dwukrotnie: VoxFlow.command"
echo " • lub w terminalu: ./VoxFlow.command"
echo "══════════════════════════════════════════════════════"
echo ""
read -p " Uruchomić VoxFlow teraz? [T/n]: " LAUNCH
if [[ "$LAUNCH" != "n" && "$LAUNCH" != "N" ]]; then
echo ""
echo -e " ${CYAN}🚀 Uruchamianie VoxFlow...${NC}"
python -m voxflow.main &
fi