Files
ha-led-remote/deploy.sh
T
bachirandClaude Opus 5.5 e4bd58afa7 Télécommande LED pour chambre d'enfant via Home Assistant
- Package HA : 8 scripts d'effets (calmes et « boum ») et une
  automatisation webhook local_only avec liste blanche stricte
- Page web autonome (HTML/CSS/JS ES5) tenant sur un écran de lecteur MP3
- Mini APK Android (WebView verrouillée) compilé sans Gradle
- Modèles + config.local.env non versionné : aucune valeur réelle
  (IP, ID du webhook, entité, prénom) dans le dépôt ; deploy.sh génère
  et déploie, android/build.sh injecte la configuration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:29:51 +02:00

57 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Génère les fichiers réels à partir des modèles et les déploie sur Home Assistant.
#
# ./deploy.sh --render-only génère seulement dist/ (rien n'est envoyé)
# ./deploy.sh génère dist/, copie sur HA, vérifie la config
# et recharge scripts + automatisations
#
# Les valeurs réelles viennent de config.local.env (non versionné, voir
# config.example.env). Le rechargement utilise HA_TOKEN dans .env.
set -euo pipefail
cd "$(dirname "$0")"
[ -f config.local.env ] || { echo "config.local.env manquant (copier config.example.env)" >&2; exit 1; }
set -a; . ./config.local.env; set +a
echo "== génération de dist/"
rm -rf dist && mkdir -p dist/packages dist/www/led
python3 - <<'EOF'
import os, re, shutil, pathlib
valeurs = {k: os.environ[k] for k in ("HA_IP", "HA_PORT", "WEBHOOK_ID", "ENTITE", "PRENOM")}
fichiers = ["packages/led_chambre.yaml"] + [str(p) for p in sorted(pathlib.Path("www/led").iterdir())]
for src in fichiers:
dst = os.path.join("dist", src)
if src.endswith((".yaml", ".html", ".json", ".svg")):
texte = open(src, encoding="utf-8").read()
for k, v in valeurs.items():
texte = texte.replace("__%s__" % k, v)
reste = sorted(set(re.findall(r"__[A-Z_]+__", texte)))
if reste:
raise SystemExit("marqueurs non remplacés dans %s : %s" % (src, reste))
open(dst, "w", encoding="utf-8").write(texte)
else:
shutil.copyfile(src, dst)
print(" ", dst)
EOF
[ "${1:-}" = "--render-only" ] && exit 0
echo "== copie vers $SSH_HOST"
scp -q dist/packages/led_chambre.yaml "$SSH_HOST:/config/packages/led_chambre.yaml"
ssh "$SSH_HOST" 'mkdir -p /config/www/led'
scp -q dist/www/led/* "$SSH_HOST:/config/www/led/"
echo "== vérification de la configuration"
ssh "$SSH_HOST" 'ha core check'
echo "== rechargement"
if [ -f .env ]; then
set -a; . ./.env; set +a
for d in script automation; do
curl -s -m 30 -o /dev/null -w " $d.reload -> %{http_code}\n" -X POST \
-H "Authorization: Bearer $HA_TOKEN" "http://$HA_IP:$HA_PORT/api/services/$d/reload"
done
else
echo " pas de .env : recharger à la main (Outils de développement → YAML → Scripts et Automatisations)"
fi