85 lines
2.7 KiB
Bash
Executable file
85 lines
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
# 1. Aktuellen Linux-Benutzer ermitteln
|
|
CURRENT_USER=$(whoami)
|
|
USER_HOME=$HOME
|
|
|
|
# 2. Version & Datum aus version.json auslesen
|
|
if [ -f version.json ]; then
|
|
VERSION=$(jq -r '.version' version.json)
|
|
DATE=$(jq -r '.date' version.json)
|
|
else
|
|
VERSION="1.0.0"
|
|
DATE=$(date +'%Y-%m-%d')
|
|
fi
|
|
|
|
echo "🔧 Baue Spannung-Monitor v$VERSION ($DATE)"
|
|
|
|
# KORREKTUR: Einfache Anführungszeichen fangen die Leerzeichen für den Go-Linker ab
|
|
LDFLAGS="-X 'main.Version=$VERSION' -X 'main.BuildDate=$DATE'"
|
|
|
|
# Multi-Plattform Builds ausführen
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$LDFLAGS" -o spannung-amd64 .
|
|
echo "✅ Fertig gebaut: ./spannung-amd64"
|
|
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "$LDFLAGS" -o spannung-arm64 .
|
|
echo "✅ Fertig gebaut: ./spannung-arm64"
|
|
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -ldflags "$LDFLAGS" -o spannung-arm32_7 .
|
|
echo "✅ Fertig gebaut: ./spannung-arm32_7"
|
|
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -ldflags "$LDFLAGS" -o spannung-arm32_6 .
|
|
echo "✅ Fertig gebaut: ./spannung-arm32_6"
|
|
|
|
# Dateiberechtigungen setzen
|
|
chmod +x ./spannung-*
|
|
|
|
# Zielverzeichnis 'app' neu erstellen
|
|
rm -rf app
|
|
mkdir app
|
|
|
|
# Binaries, Konfiguration und Web-Ordner kopieren
|
|
cp spannung-* ./app/
|
|
cp config.json ./app/
|
|
cp version.json ./app/
|
|
cp web ./app/ -r
|
|
|
|
# 3. Die Service-Datei universell generiert (nutzt systemd %h/%u Specifiers)
|
|
cat << 'EOF' > ./app/spannung.service
|
|
# ==============================================================================
|
|
# KURZANLEITUNG ZUR INSTALLATION UND VERWALTUNG
|
|
# ==============================================================================
|
|
# 1. Datei kopieren nach: /etc/systemd/system/spannung.service
|
|
# 2. Systemd neu laden: sudo systemctl daemon-reload
|
|
# 3. Autostart aktivieren: sudo systemctl enable spannung.service
|
|
# 4. Dienst starten: sudo systemctl start spannung.service
|
|
# ==============================================================================
|
|
|
|
[Unit]
|
|
Description=Spannung Control Service
|
|
After=network-online.target i2c.service
|
|
Wants=network-online.target
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStartPre=/bin/bash -c 'for i in {1..10}; do i2cdetect -y 1 | grep -E "^40:" | grep -q -E "\b48\b" && exit 0; echo "warte auf ADS1115..."; sleep 2; done; exit 1'
|
|
ExecStart=%h/spannung/app/spannung-arm32_7
|
|
WorkingDirectory=%h/spannung/app
|
|
User=%u
|
|
Restart=on-failure
|
|
RestartSec=5s
|
|
StartLimitIntervalSec=60s
|
|
StartLimitBurst=3
|
|
|
|
StandardOutput=append:%h/spannung/app/spannung.log
|
|
StandardError=append:%h/spannung/app/spannung.log
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
echo "📝 Service-Datei universell generiert (nutzt systemd %h/%u Specifiers)"
|
|
echo "📂 Inhalt des fertigen app-Verzeichnisses:"
|
|
ls -la app
|