remote-shack/build.sh

71 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
set -e
echo "🔧 Baue Remote-Shack (Reiner Kompilierungs-Sync)..."
# Clean & Prep - Löscht alte Artefakte und erstellt die Zielordner strukturiert
rm -rf app
rm -f .shack_session
mkdir -p app/server app/clients
# 1. Server bauen
echo " -> [Server] Kompiliere Haupt-Server..."
go build -o ./app/server/shack-server ./cmd/server/main.go
# 2. Clients bauen
echo " -> [Client] Rig-Client..."
go build -o ./app/clients/client-rig ./cmd/client-rig/main.go
echo " -> [Client] Relais-Client..."
go build -o ./app/clients/client-relais ./cmd/client-relais/main.go
echo " -> [Client] Rotor-Client (Fyne GUI)..."
# CGO_ENABLED=1 ist zwingend erforderlich für Grafiktreiber-Kopplung von Fyne v2.7
CGO_ENABLED=1 go build -o ./app/clients/client-rotor ./cmd/client-rotor/main.go
echo " -> [Client] Volt-Monitor (ADS1115 Telemetrie)..."
go build -o ./app/clients/client-volt ./cmd/client-volt/main.go
# Ausführungsrechte für alle erzeugten Binaries innerhalb der app-Struktur vergeben
find ./app -type f -exec chmod +x {} +
echo "✅ Alle Binaries erfolgreich in ./app/ erstellt."
# 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