#!/bin/bash # # Apple Battery Saver - Installation # Aufruf: sudo ./install.sh # set -euo pipefail LABEL="de.smallmountains.batterysaver" SRC="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BIN_DST=/usr/local/bin/battery-saver.sh CONF_DST=/usr/local/etc/battery-saver.conf PLIST_DST="/Library/LaunchDaemons/${LABEL}.plist" if [ "$(id -u)" -ne 0 ]; then echo "Dieses Skript muss als root laufen: sudo ./install.sh" >&2 exit 1 fi echo "Apple Battery Saver - Installation" echo "==================================" # --- Programm --------------------------------------------------------------- install -d -m 755 /usr/local/bin install -m 755 -o root -g wheel "${SRC}/battery-saver.sh" "$BIN_DST" echo " Programm -> ${BIN_DST}" # --- Konfiguration ---------------------------------------------------------- install -d -m 755 /usr/local/etc if [ -f "$CONF_DST" ]; then echo " Konfiguration -> ${CONF_DST} (vorhanden, bleibt unverändert)" else install -m 644 -o root -g wheel "${SRC}/battery-saver.conf" "$CONF_DST" echo " Konfiguration -> ${CONF_DST}" fi # --- Logdatei --------------------------------------------------------------- touch /var/log/battery-saver.log chmod 644 /var/log/battery-saver.log chown root:wheel /var/log/battery-saver.log # --- LaunchDaemon ----------------------------------------------------------- # Falls bereits geladen, erst sauber entladen. if launchctl print "system/${LABEL}" >/dev/null 2>&1; then echo " Vorhandenen Dienst entladen ..." launchctl bootout "system/${LABEL}" 2>/dev/null || true fi install -m 644 -o root -g wheel "${SRC}/${LABEL}.plist" "$PLIST_DST" echo " LaunchDaemon -> ${PLIST_DST}" if ! launchctl bootstrap system "$PLIST_DST" 2>/dev/null; then # Fallback für ältere macOS-Versionen launchctl load -w "$PLIST_DST" fi # --- Prüfung ---------------------------------------------------------------- echo if launchctl print "system/${LABEL}" >/dev/null 2>&1; then echo "Dienst läuft." else echo "WARNUNG: Dienst konnte nicht gestartet werden." >&2 exit 1 fi echo echo "Fertig. Nützliche Befehle:" echo " battery-saver.sh --status Messwerte und Bewertung" echo " sudo battery-saver.sh --test Logik simulieren" echo " tail -f /var/log/battery-saver.log Protokoll mitlesen" echo " sudo ./uninstall.sh Deinstallieren" echo "$BIN_DST" --status || true