-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·197 lines (171 loc) · 6.55 KB
/
install.sh
File metadata and controls
executable file
·197 lines (171 loc) · 6.55 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
#!/usr/bin/env bash
# ============================================================
# Console Error Scanner - Installer
#
# Verwendung:
# curl -fsSL https://raw.githubusercontent.com/michaelblaess/console-error-scanner/main/install.sh | bash
#
# Laedt das neueste Release von GitHub herunter und installiert es.
# Keine Abhaengigkeiten noetig (kein Python, kein Git, kein Chrome).
#
# Installiert nach: ~/.console-error-scanner/
# Erstellt Wrapper: ~/.local/bin/console-error-scanner
# ============================================================
set -e
REPO="michaelblaess/console-error-scanner"
INSTALL_DIR="$HOME/.console-error-scanner"
BIN_DIR="$HOME/.local/bin"
WRAPPER="$BIN_DIR/console-error-scanner"
echo
echo " ╔══════════════════════════════════════════════╗"
echo " ║ Console Error Scanner - Installer ║"
echo " ╚══════════════════════════════════════════════╝"
echo
# --- OS und Architektur erkennen ---
os="$(uname -s)"; arch="$(uname -m)"
case "$os" in
Linux) os_key="linux" ;;
Darwin) os_key="macos" ;;
*)
echo " [FEHLER] Nicht unterstuetztes Betriebssystem: $os"
echo " Unterstuetzt: Linux, macOS"
echo " Fuer Windows: irm ...install.ps1 | iex"
exit 1
;;
esac
case "$arch" in
x86_64|amd64) arch_key="x86_64" ;;
arm64|aarch64) arch_key="arm64" ;;
*) arch_key="$arch" ;;
esac
echo " Plattform: $os_key ($arch_key)"
echo
# --- curl oder wget pruefen ---
DOWNLOAD_CMD=""
if command -v curl &> /dev/null; then
DOWNLOAD_CMD="curl"
elif command -v wget &> /dev/null; then
DOWNLOAD_CMD="wget"
else
echo " [FEHLER] Weder curl noch wget gefunden!"
echo " Bitte installieren: sudo apt install curl"
exit 1
fi
# --- Neuestes Release von GitHub ermitteln ---
echo " Suche neuestes Release..."
API_URL="https://api.github.com/repos/${REPO}/releases/latest"
if [ "$DOWNLOAD_CMD" = "curl" ]; then
RELEASE_JSON=$(curl -fsSL "$API_URL" 2>/dev/null) || {
echo " [FEHLER] Konnte GitHub API nicht erreichen."
echo " Pruefe deine Internetverbindung."
exit 1
}
else
RELEASE_JSON=$(wget -qO- "$API_URL" 2>/dev/null) || {
echo " [FEHLER] Konnte GitHub API nicht erreichen."
exit 1
}
fi
# Asset versionsunabhaengig per OS+Arch waehlen (ohne jq)
candidates=("${os_key}-${arch_key}")
[ "$os_key" = "macos" ] && [ "$arch_key" = "arm64" ] && candidates+=("macos-x86_64")
urls="$(echo "$RELEASE_JSON" | grep -oE '"browser_download_url": *"[^"]*"' \
| sed -E 's/.*"(https[^"]*)"/\1/')"
DOWNLOAD_URL=""
for want in "${candidates[@]}"; do
DOWNLOAD_URL="$(echo "$urls" | grep -E "${want}[^/]*\.(zip|tar\.gz)$" | head -1)"
[ -n "$DOWNLOAD_URL" ] && break
done
if [ -z "$DOWNLOAD_URL" ]; then
echo " [FEHLER] Kein passendes Asset fuer ${os_key}-${arch_key} gefunden!"
echo
echo " Verfuegbare Assets:"
echo "$urls" | sed 's#.*/# #'
echo
echo " Moeglicherweise gibt es noch kein Release fuer deine Plattform."
exit 1
fi
# Archivname fuer Temp-Datei aus der URL ableiten
ARCHIVE="$(basename "$DOWNLOAD_URL")"
# Version extrahieren
VERSION=$(echo "$RELEASE_JSON" | grep -o '"tag_name": *"[^"]*"' | head -1 | sed 's/.*: *"//' | sed 's/"//')
echo " [OK] Release gefunden: $VERSION"
echo
# --- Download ---
TMPDIR=$(mktemp -d)
TMPFILE="$TMPDIR/$ARCHIVE"
echo " Lade herunter: $ARCHIVE"
if [ "$DOWNLOAD_CMD" = "curl" ]; then
curl -fSL --progress-bar -o "$TMPFILE" "$DOWNLOAD_URL"
else
wget --show-progress -qO "$TMPFILE" "$DOWNLOAD_URL"
fi
echo " [OK] Download abgeschlossen"
echo
# --- Entpacken ---
echo " Entpacke nach: $INSTALL_DIR"
# Alte Installation sichern
if [ -d "$INSTALL_DIR" ]; then
rm -rf "$INSTALL_DIR.bak"
mv "$INSTALL_DIR" "$INSTALL_DIR.bak"
fi
mkdir -p "$INSTALL_DIR"
tar -xzf "$TMPFILE" -C "$INSTALL_DIR" --strip-components=1
rm -rf "$TMPDIR"
# Alte Sicherung entfernen
rm -rf "$INSTALL_DIR.bak"
echo " [OK] Entpackt"
echo
# --- Wrapper-Script erstellen ---
mkdir -p "$BIN_DIR"
cat > "$WRAPPER" << 'SCRIPT'
#!/usr/bin/env bash
# Console Error Scanner - Wrapper (automatisch generiert)
SCANNER_DIR="$HOME/.console-error-scanner"
# PLAYWRIGHT_BROWSERS_PATH setzen fuer gebundeltes Chromium
if [ -d "$SCANNER_DIR/browsers" ]; then
export PLAYWRIGHT_BROWSERS_PATH="$SCANNER_DIR/browsers"
fi
"$SCANNER_DIR/console-error-scanner" "$@"
SCRIPT
chmod +x "$WRAPPER"
chmod +x "$INSTALL_DIR/console-error-scanner"
echo " [OK] Wrapper erstellt: $WRAPPER"
# --- PATH pruefen ---
if ! echo "$PATH" | tr ':' '\n' | grep -qx "$BIN_DIR"; then
echo
echo " [HINWEIS] $BIN_DIR ist nicht im PATH."
echo
SHELL_NAME=$(basename "$SHELL" 2>/dev/null || echo "bash")
case "$SHELL_NAME" in
zsh) RC_FILE="~/.zshrc" ;;
fish) RC_FILE="~/.config/fish/config.fish" ;;
*) RC_FILE="~/.bashrc" ;;
esac
echo " Fuege diese Zeile zu $RC_FILE hinzu:"
echo " export PATH=\"\$HOME/.local/bin:\$PATH\""
echo
echo " Oder fuer diese Session:"
echo " export PATH=\"\$HOME/.local/bin:\$PATH\""
fi
# --- Fertig ---
echo
echo " ╔══════════════════════════════════════════════╗"
echo " ║ Installation abgeschlossen! ($VERSION)"
echo " ╠══════════════════════════════════════════════╣"
echo " ║ ║"
echo " ║ Starten mit: ║"
echo " ║ console-error-scanner URL ║"
echo " ║ ║"
echo " ║ Beispiel: ║"
echo " ║ console-error-scanner https://example.com║"
echo " ║ ║"
echo " ║ Aktualisieren: ║"
echo " ║ Installer erneut ausfuehren. ║"
echo " ║ ║"
echo " ║ Deinstallieren: ║"
echo " ║ rm -rf ~/.console-error-scanner ║"
echo " ║ rm ~/.local/bin/console-error-scanner ║"
echo " ║ ║"
echo " ╚══════════════════════════════════════════════╝"
echo