Files
Hyprland-Config/scripts/dev/mysql-menu.sh

164 lines
5.0 KiB
Bash
Executable File

#!/bin/bash
CONTAINER_NAME="local-mysql-dev"
MYSQL_ROOT_PASSWORD="root"
MYSQL_PORT="3307"
MYSQL_IMAGE="mysql:8.4"
choice=$(printf "󰆼 MySQL starten\n󰅖 MySQL stoppen\n󰑓 MySQL neustarten\n󰍉 MySQL Status\n󰌑 MySQL Logs\n󰒓 MySQL erstellen (neu)" | wofi --dmenu --prompt "Local MySQL")
docker_service_running() {
systemctl is-active --quiet docker
}
docker_usable() {
docker version >/dev/null 2>&1
}
ensure_docker_ready() {
if ! docker_service_running; then
notify-send "MySQL" "Docker-Service läuft nicht"
return 1
fi
if ! docker_usable; then
notify-send "MySQL" "Docker läuft, aber dein User hat keinen Zugriff oder Docker ist noch nicht bereit"
return 1
fi
return 0
}
container_exists() {
docker ps -a --format '{{.Names}}' | grep -qx "$CONTAINER_NAME"
}
case "$choice" in
"󰆼 MySQL starten")
if ! ensure_docker_ready; then
exit 1
fi
if container_exists; then
docker start "$CONTAINER_NAME" >/dev/null 2>&1 \
&& notify-send "MySQL" "Container gestartet: localhost:$MYSQL_PORT" \
|| notify-send "MySQL" "Start fehlgeschlagen"
else
notify-send "MySQL" "Container existiert nicht. Bitte erst erstellen."
fi
;;
"󰅖 MySQL stoppen")
if ! ensure_docker_ready; then
exit 1
fi
docker stop "$CONTAINER_NAME" >/dev/null 2>&1 \
&& notify-send "MySQL" "Container gestoppt" \
|| notify-send "MySQL" "Stop fehlgeschlagen oder Container nicht vorhanden"
;;
"󰑓 MySQL neustarten")
if ! ensure_docker_ready; then
exit 1
fi
docker restart "$CONTAINER_NAME" >/dev/null 2>&1 \
&& notify-send "MySQL" "Container neugestartet: localhost:$MYSQL_PORT" \
|| notify-send "MySQL" "Restart fehlgeschlagen oder Container nicht vorhanden"
;;
"󰍉 MySQL Status")
kitty -e bash -lc "
echo '=== MySQL Container Status ==='
echo
docker ps -a --filter name=$CONTAINER_NAME
echo
echo 'Verbindung:'
echo 'Host: localhost'
echo 'Port: $MYSQL_PORT'
echo 'User: root'
echo 'Passwort: $MYSQL_ROOT_PASSWORD'
echo
read -n 1 -s -r -p 'Taste drücken zum Schließen...'
"
;;
"󰌑 MySQL Logs")
kitty -e bash -lc "
docker logs --tail 100 $CONTAINER_NAME
echo
read -n 1 -s -r -p 'Taste drücken zum Schließen...'
"
;;
"󰒓 MySQL erstellen (neu)")
if ! ensure_docker_ready; then
exit 1
fi
if container_exists; then
notify-send "MySQL" "Container existiert bereits"
else
kitty -e bash -lc '
echo "=== MySQL Container wird erstellt ==="
echo
if ! systemctl is-active --quiet docker; then
echo "Docker-Service läuft nicht."
echo
read -n 1 -s -r -p "Taste drücken zum Schließen..."
exit 1
fi
if ! docker version >/dev/null 2>&1; then
echo "Docker läuft, aber dein User hat keinen Zugriff auf Docker oder Docker ist noch nicht bereit."
echo
echo "Prüfe z. B.:"
echo " docker version"
echo " groups"
echo
read -n 1 -s -r -p "Taste drücken zum Schließen..."
exit 1
fi
echo "Image wird geprüft/pulled: '"$MYSQL_IMAGE"'..."
docker pull "'"$MYSQL_IMAGE"'"
echo
echo "Container wird erstellt..."
docker run -d \
--name "'"$CONTAINER_NAME"'" \
-e MYSQL_ROOT_PASSWORD="'"$MYSQL_ROOT_PASSWORD"'" \
-p "'"$MYSQL_PORT"':3306" \
-v "'"${CONTAINER_NAME}"'-data:/var/lib/mysql" \
"'"$MYSQL_IMAGE"'"
EXIT_CODE=$?
echo
if [ $EXIT_CODE -eq 0 ]; then
echo "MySQL Container erfolgreich erstellt und gestartet."
echo
echo "Host: localhost"
echo "Port: '"$MYSQL_PORT"'"
echo "User: root"
echo "Passwort: '"$MYSQL_ROOT_PASSWORD"'"
notify-send "MySQL" "Container erstellt: localhost:'"$MYSQL_PORT"' (root/root)"
else
echo "Erstellung fehlgeschlagen."
echo
echo "Häufige Ursachen:"
echo "- Port bereits belegt"
echo "- Docker ist noch nicht bereit"
echo "- Keine Rechte auf Docker"
echo "- Containername existiert schon teilweise"
notify-send "MySQL Fehler" "Erstellung fehlgeschlagen - siehe Terminal"
fi
echo
read -n 1 -s -r -p "Taste drücken zum Schließen..."
'
fi
;;
esac