-
Notifications
You must be signed in to change notification settings - Fork 291
Expand file tree
/
Copy pathinstall.sh
More file actions
135 lines (116 loc) · 4 KB
/
install.sh
File metadata and controls
135 lines (116 loc) · 4 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
#!/usr/bin/env bash
# install.sh — Darkdump installer for Linux and macOS
# Creates `darkdump` (web) and `darkdump-cli` launcher commands.
set -e
BOLD="\033[1m"
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
RED="\033[0;31m"
RESET="\033[0m"
info() { echo -e "${BOLD}${GREEN}[+]${RESET} $*"; }
warn() { echo -e "${BOLD}${YELLOW}[!]${RESET} $*"; }
error() { echo -e "${BOLD}${RED}[x]${RESET} $*" >&2; }
die() { error "$*"; exit 1; }
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OS="$(uname -s)"
case "$OS" in
Linux*) PLATFORM="linux" ;;
Darwin*) PLATFORM="mac" ;;
*) die "Unsupported platform: $OS. This installer supports Linux and macOS." ;;
esac
info "Detected platform: $OS"
PYTHON=""
for candidate in python3 python; do
if command -v "$candidate" &>/dev/null; then
ver="$("$candidate" -c 'import sys; print(sys.version_info.major)')"
if [ "$ver" = "3" ]; then
PYTHON="$(command -v "$candidate")"
break
fi
fi
done
[ -n "$PYTHON" ] || die "Python 3 not found. Please install Python 3 and re-run this script."
info "Using Python: $PYTHON ($($PYTHON --version))"
PIP=""
for candidate in pip3 pip; do
if command -v "$candidate" &>/dev/null; then
ver="$("$candidate" --version 2>&1)"
if echo "$ver" | grep -q "python 3\|python3"; then
PIP="$(command -v "$candidate")"
break
fi
fi
done
if [ -z "$PIP" ]; then
# Fall back to `python -m pip`
if "$PYTHON" -m pip --version &>/dev/null 2>&1; then
PIP="$PYTHON -m pip"
else
die "pip for Python 3 not found. Install pip and re-run."
fi
fi
info "Using pip: $PIP"
info "Installing darkdump dependencies..."
$PIP install --quiet -r "$SCRIPT_DIR/requirements.txt"
if [ -f "$SCRIPT_DIR/darkdump-web/requirements.txt" ]; then
info "Installing darkdump-web dependencies..."
$PIP install --quiet -r "$SCRIPT_DIR/darkdump-web/requirements.txt"
fi
SYSTEM_BIN="/usr/local/bin"
USER_BIN="$HOME/.local/bin"
if [ -w "$SYSTEM_BIN" ] || sudo -n true 2>/dev/null; then
INSTALL_DIR="$SYSTEM_BIN"
USE_SUDO=true
else
warn "No write access to $SYSTEM_BIN — installing to $USER_BIN (user-local)."
INSTALL_DIR="$USER_BIN"
USE_SUDO=false
mkdir -p "$INSTALL_DIR"
fi
DARKDUMP_LAUNCHER="$INSTALL_DIR/darkdump"
DARKDUMP_SCRIPT="#!/usr/bin/env bash
# Darkdump web launcher — generated by install.sh
exec \"$PYTHON\" \"$SCRIPT_DIR/darkdump-web/app.py\" \"\$@\"
"
if [ "$USE_SUDO" = true ] && [ ! -w "$SYSTEM_BIN" ]; then
echo "$DARKDUMP_SCRIPT" | sudo tee "$DARKDUMP_LAUNCHER" > /dev/null
sudo chmod +x "$DARKDUMP_LAUNCHER"
else
printf '%s' "$DARKDUMP_SCRIPT" > "$DARKDUMP_LAUNCHER"
chmod +x "$DARKDUMP_LAUNCHER"
fi
info "Installed: $DARKDUMP_LAUNCHER"
DARKDUMP_CLI_LAUNCHER="$INSTALL_DIR/darkdump-cli"
DARKDUMP_CLI_SCRIPT="#!/usr/bin/env bash
# Darkdump CLI launcher — generated by install.sh
exec \"$PYTHON\" \"$SCRIPT_DIR/darkdump.py\" \"\$@\"
"
if [ "$USE_SUDO" = true ] && [ ! -w "$SYSTEM_BIN" ]; then
echo "$DARKDUMP_CLI_SCRIPT" | sudo tee "$DARKDUMP_CLI_LAUNCHER" > /dev/null
sudo chmod +x "$DARKDUMP_CLI_LAUNCHER"
else
printf '%s' "$DARKDUMP_CLI_SCRIPT" > "$DARKDUMP_CLI_LAUNCHER"
chmod +x "$DARKDUMP_CLI_LAUNCHER"
fi
info "Installed: $DARKDUMP_CLI_LAUNCHER"
if [ "$INSTALL_DIR" = "$USER_BIN" ]; then
if ! echo "$PATH" | grep -q "$USER_BIN"; then
warn "$USER_BIN is not in your PATH."
SHELL_RC=""
case "$SHELL" in
*/zsh) SHELL_RC="$HOME/.zshrc" ;;
*/bash) SHELL_RC="$HOME/.bashrc" ;;
esac
if [ -n "$SHELL_RC" ]; then
warn "Add it by running:"
echo ""
echo " echo 'export PATH=\"\$HOME/.local/bin:\$PATH\"' >> $SHELL_RC && source $SHELL_RC"
echo ""
fi
fi
fi
echo ""
info "Installation complete."
echo -e " ${BOLD}darkdump${RESET} — start the web interface (then open http://127.0.0.1:5000)"
echo -e " ${BOLD}darkdump-cli${RESET} — run the CLI tool"
echo ""