-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsnapcrash
More file actions
executable file
·75 lines (61 loc) · 3.74 KB
/
snapcrash
File metadata and controls
executable file
·75 lines (61 loc) · 3.74 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
#!/usr/bin/env bash
#
# _
# ___ _ __ __ _ _ __ ___ _ __ __ _ ___ | |__
# / __| '_ \ / _` | '_ \ / __| '__/ _` / __|| '_ \
# \__ \ | | | (_| | |_) | (__| | | (_| \__ \| | | |
# |___/_| |_|\__,_| .__/ \___|_| \__,_|___/|_| |_|
# |_|
#
# Script : snapcrash
# Location : /usr/local/bin/snapcrash
# Author : Jens Ochmann
# Date : 2025‑04‑20
# License : MIT
# Description : Reset Snap Store by terminating, removing and reinstalling it.
# Requires root : Elevates via sudo if needed
#
set -euo pipefail
#–––––––––––––––– Farben (Fallback) ––––––––––––––––––––––––––––––––––––––––––––
RED=${RED:-"\033[0;31m"}
GREEN=${GREEN:-"\033[0;32m"}
YELLOW=${YELLOW:-"\033[0;33m"}
NC=${NC:-"\033[0m"}
info() { printf "%b%s%b\n" "${YELLOW}" "$*" "${NC}"; }
ok() { printf "%b%s%b\n" "${GREEN}" "$*" "${NC}"; }
err() { printf "%b%s%b\n" "${RED}" "$*" "${NC}" >&2; }
#–––––––––––––––– Root‑Handling ––––––––––––––––––––––––––––––––––––––––––––––––
if (( EUID != 0 )); then
exec sudo --preserve-env=RED,GREEN,YELLOW,NC "$0" "$@"
fi
#–––––––––––––––– Konfiguration laden (optional) ––––––––––––––––––––––––––––––
CONFIG_FILE="${HOME}/.config/sc.conf"
[[ -f "${CONFIG_FILE}" ]] && source "${CONFIG_FILE}" || true
#–––––––––––––––– Vorab‑Checks ––––––––––––––––––––––––––––––––––––––––––––––––
command -v snap >/dev/null 2>&1 || { err "snapd is not installed."; exit 1; }
# apt nur nutzen, wenn vorhanden (Debian/Ubuntu)
APT_AVAILABLE=false
if command -v apt-get >/dev/null 2>&1; then
APT_AVAILABLE=true
fi
#–––––––––––––––– Snap Store Prozesse beenden ––––––––––––––––––––––––––––––––
info "Terminating Snap Store processes …"
pkill -15 snap-store 2>/dev/null || true
sleep 2
pkill -0 snap-store 2>/dev/null && { info "Force‑killing remaining processes …"; pkill -9 snap-store || true; }
ok "Snap Store processes stopped."
#–––––––––––––––– Snap Store entfernen ––––––––––––––––––––––––––––––––––––––––
info "Removing Snap Store …"
snap remove snap-store || err "Snap Store removal failed (may not be installed)."
#–––––––––––––––– Snap‑System aktualisieren –––––––––––––––––––––––––––––––––––
info "Refreshing all snaps …"
snap refresh || err "snap refresh encountered errors."
#–––––––––––––––– System‑Packages aktualisieren (optional) ––––––––––––––––––––
if ${APT_AVAILABLE}; then
info "Updating package lists & upgrading (apt) …"
apt-get update && apt-get -y full-upgrade && ok "System packages updated." || err "apt upgrade failed."
fi
#–––––––––––––––– Snap Store neu installieren ––––––––––––––––––––––––––––––––
info "Re‑installing Snap Store …"
snap install snap-store && ok "Snap Store installed successfully." || err "Snap Store installation failed."
echo -e "\n${GREEN}snapcrash routine completed.${NC}"