install.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. #
  3. # Apple Battery Saver - Installation
  4. # Aufruf: sudo ./install.sh
  5. #
  6. set -euo pipefail
  7. LABEL="de.smallmountains.batterysaver"
  8. SRC="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  9. BIN_DST=/usr/local/bin/battery-saver.sh
  10. CONF_DST=/usr/local/etc/battery-saver.conf
  11. PLIST_DST="/Library/LaunchDaemons/${LABEL}.plist"
  12. if [ "$(id -u)" -ne 0 ]; then
  13. echo "Dieses Skript muss als root laufen: sudo ./install.sh" >&2
  14. exit 1
  15. fi
  16. echo "Apple Battery Saver - Installation"
  17. echo "=================================="
  18. # --- Programm ---------------------------------------------------------------
  19. install -d -m 755 /usr/local/bin
  20. install -m 755 -o root -g wheel "${SRC}/battery-saver.sh" "$BIN_DST"
  21. echo " Programm -> ${BIN_DST}"
  22. # --- Konfiguration ----------------------------------------------------------
  23. install -d -m 755 /usr/local/etc
  24. if [ -f "$CONF_DST" ]; then
  25. echo " Konfiguration -> ${CONF_DST} (vorhanden, bleibt unverändert)"
  26. else
  27. install -m 644 -o root -g wheel "${SRC}/battery-saver.conf" "$CONF_DST"
  28. echo " Konfiguration -> ${CONF_DST}"
  29. fi
  30. # --- Logdatei ---------------------------------------------------------------
  31. touch /var/log/battery-saver.log
  32. chmod 644 /var/log/battery-saver.log
  33. chown root:wheel /var/log/battery-saver.log
  34. # --- LaunchDaemon -----------------------------------------------------------
  35. # Falls bereits geladen, erst sauber entladen.
  36. if launchctl print "system/${LABEL}" >/dev/null 2>&1; then
  37. echo " Vorhandenen Dienst entladen ..."
  38. launchctl bootout "system/${LABEL}" 2>/dev/null || true
  39. fi
  40. install -m 644 -o root -g wheel "${SRC}/${LABEL}.plist" "$PLIST_DST"
  41. echo " LaunchDaemon -> ${PLIST_DST}"
  42. if ! launchctl bootstrap system "$PLIST_DST" 2>/dev/null; then
  43. # Fallback für ältere macOS-Versionen
  44. launchctl load -w "$PLIST_DST"
  45. fi
  46. # --- Prüfung ----------------------------------------------------------------
  47. echo
  48. if launchctl print "system/${LABEL}" >/dev/null 2>&1; then
  49. echo "Dienst läuft."
  50. else
  51. echo "WARNUNG: Dienst konnte nicht gestartet werden." >&2
  52. exit 1
  53. fi
  54. echo
  55. echo "Fertig. Nützliche Befehle:"
  56. echo " battery-saver.sh --status Messwerte und Bewertung"
  57. echo " sudo battery-saver.sh --test Logik simulieren"
  58. echo " tail -f /var/log/battery-saver.log Protokoll mitlesen"
  59. echo " sudo ./uninstall.sh Deinstallieren"
  60. echo
  61. "$BIN_DST" --status || true