-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsetup_venv.sh
More file actions
118 lines (105 loc) · 3.7 KB
/
Copy pathsetup_venv.sh
File metadata and controls
118 lines (105 loc) · 3.7 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
#!/usr/bin/env bash
# setup_venv.sh — Setup virtual environment for wfh.py
# Author: André Henrique (@mrhenrike)
# Compatible with Linux, macOS, and Android (Termux)
set -e
VENV_DIR=".venv"
PYTHON_MIN="3.8"
echo "=== wfh.py — Virtual Environment Setup ==="
echo ""
# Detect OS
OS="$(uname -s)"
case "$OS" in
Linux*)
if [ -d "/data/data/com.termux" ]; then
PLATFORM="android-termux"
else
PLATFORM="linux"
fi
;;
Darwin*) PLATFORM="macos" ;;
MINGW*|MSYS*|CYGWIN*) PLATFORM="windows" ;;
*) PLATFORM="unknown" ;;
esac
echo "Platform detected: $PLATFORM"
# Install OS-level prerequisites
install_prereqs() {
echo ""
echo "--- Installing OS prerequisites ---"
case "$PLATFORM" in
linux)
if command -v apt-get &>/dev/null; then
sudo apt-get update -qq
sudo apt-get install -y -qq python3 python3-pip python3-venv \
libxml2-dev libxslt1-dev zlib1g-dev \
tesseract-ocr libtesseract-dev 2>/dev/null || true
elif command -v dnf &>/dev/null; then
sudo dnf install -y python3 python3-pip python3-devel \
libxml2-devel libxslt-devel \
tesseract tesseract-devel 2>/dev/null || true
elif command -v pacman &>/dev/null; then
sudo pacman -Sy --noconfirm python python-pip \
libxml2 libxslt tesseract 2>/dev/null || true
elif command -v apk &>/dev/null; then
apk add --no-cache python3 py3-pip \
libxml2-dev libxslt-dev \
tesseract-ocr 2>/dev/null || true
fi
;;
macos)
if command -v brew &>/dev/null; then
brew install python3 tesseract 2>/dev/null || true
else
echo "WARNING: Homebrew not found. Install from https://brew.sh"
echo "Then run: brew install python3 tesseract"
fi
;;
android-termux)
pkg update -y 2>/dev/null || true
pkg install -y python clang libxml2 libxslt \
libjpeg-turbo libpng 2>/dev/null || true
;;
esac
}
# Check Python
if ! command -v python3 &>/dev/null; then
echo "Python3 not found. Attempting to install prerequisites..."
install_prereqs
fi
if ! command -v python3 &>/dev/null; then
echo "ERROR: python3 still not found after install attempt."
echo "Please install Python >= ${PYTHON_MIN} manually."
exit 1
fi
PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
echo "Python version: $PY_VER"
# Create or repair venv
_venv_python() {
[ -x "$VENV_DIR/bin/python" ] && "$VENV_DIR/bin/python" -c "import sys" 2>/dev/null
}
if [ ! -d "$VENV_DIR" ] || ! _venv_python; then
if [ -d "$VENV_DIR" ]; then
echo "Removing broken venv at $VENV_DIR"
rm -rf "$VENV_DIR"
fi
python3 -m venv "$VENV_DIR"
echo "venv created at $VENV_DIR"
else
echo "venv already exists at $VENV_DIR"
fi
# Install using venv pip explicitly (avoids PEP 668 system pip)
"$VENV_DIR/bin/pip" install --upgrade pip --quiet
echo ""
echo "--- Installing core dependencies ---"
"$VENV_DIR/bin/pip" install -r requirements.txt
echo ""
echo "=== Environment ready! ==="
echo ""
echo "Activate: source .venv/bin/activate"
echo "Run: python wfh.py --help"
echo "Or: wfh --help (if installed via pip)"
echo ""
echo "Optional extras:"
echo " pip install wfh-wordlist[docs] # PDF/XLSX/DOCX parsing"
echo " pip install wfh-wordlist[ocr] # OCR/image text extraction"
echo " pip install wfh-wordlist[full] # All optional dependencies"