#!/bin/bash
# Wrapper sudoers des updates AirLink (lot C) — installé en /usr/local/bin/wds-airlink-update.
# Valide strictement la version (sudo ≥ 1.9.10 interdit les jokers d'arguments dans sudoers,
# même leçon que wds-restart-channel) puis lance apply.sh dans une unité systemd TRANSIENTE
# DÉTACHÉE : l'agent qui nous appelle va être redémarré par la bascule — un enfant de son
# cgroup mourrait avec lui. --collect : l'unité est ramassée même en échec ; si une bascule
# est déjà en cours, systemd-run refuse le nom → single-flight garanti côté root aussi.
set -euo pipefail
V="${1:-}"
[[ "$V" =~ ^[0-9A-Za-z][0-9A-Za-z._-]{0,63}$ ]] || { echo "version invalide: ${V:-∅}" >&2; exit 2; }
[[ -d "/var/lib/wds-airlink/staging/$V" ]] || { echo "staging absent pour $V" >&2; exit 3; }
exec systemd-run --unit=wds-airlink-apply --collect \
  --description="WDS AirLink update → $V" \
  /usr/local/lib/wds-airlink/apply.sh "$V"
