pkgsync: añade aviso por Gotify a los fallos, además de notify-send
notify-send depende de la sesión gráfica -- poco fiable justo cuando push falla en ExecStop durante el apagado (sesión/D-Bus cayéndose). notify_fail() ahora también hace POST a push.josevi.ovh (mismo Gotify que ya usa WUD para avisos de actualizaciones), best-effort con timeout corto, leyendo el token de ~/.config/pkgsync/gotify.env -- fichero local-only, nunca tracked (mismo criterio que overrides.local.toml), con scaffold comentado en bootstrap. De paso: durante la verificación se descubrió que notify-send llevaba tiempo fallando en silencio en esta máquina (applet de Notifications ausente de shownItems/extraItems en el systray) -- arreglado aparte, no es parte de este commit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
56742247ce
commit
1994f7b030
@@ -29,6 +29,12 @@ OVERRIDES_FILE="$METAPAC_CONFIG_DIR/groups/overrides.local.toml"
|
||||
# borra en el primer push que vuelve a tener éxito.
|
||||
FAIL_MARKER="$HOME/.local/share/pkgsync.failed"
|
||||
|
||||
# Token de Gotify (push.josevi.ovh, mismo servidor que usa WUD) para avisos
|
||||
# de fallo -- llega también sin sesión gráfica, a diferencia de notify-send.
|
||||
# Fichero local-only, nunca tracked (ni chezmoi ni el repo arch-setup):
|
||||
# mismo criterio que OVERRIDES_FILE. Si no existe, se omite sin más.
|
||||
GOTIFY_ENV="$HOME/.config/pkgsync/gotify.env"
|
||||
|
||||
# flatpak sin --user/--system instala en "system" con la config actual de
|
||||
# install_flatpaks() en packages-common.sh. Si tu máquina usa --user, cambia
|
||||
# esto (o verifica con: flatpak list --columns=installation,application).
|
||||
@@ -235,6 +241,22 @@ notify_fail() {
|
||||
echo "!! $1: $2" >&2
|
||||
printf '%s -- %s: %s\n' "$(date -Iseconds)" "$1" "$2" >"$FAIL_MARKER"
|
||||
command -v notify-send &>/dev/null && timeout 5 notify-send --app-name=pkgsync --urgency=critical "$1" "$2"
|
||||
notify_gotify "$1" "$2"
|
||||
}
|
||||
|
||||
# Best-effort, nunca bloquea ni hace fallar el caller: mismo espíritu que el
|
||||
# timeout de notify-send de arriba, pero via HTTPS -- llega aunque D-Bus/la
|
||||
# sesión gráfica ya esté cayéndose (caso ExecStop en apagado) o no haya
|
||||
# sesión gráfica en absoluto.
|
||||
notify_gotify() {
|
||||
[[ -f "$GOTIFY_ENV" ]] || return 0
|
||||
local GOTIFY_URL GOTIFY_TOKEN
|
||||
# shellcheck disable=SC1090
|
||||
source "$GOTIFY_ENV"
|
||||
[[ -n "${GOTIFY_URL:-}" && -n "${GOTIFY_TOKEN:-}" ]] || return 0
|
||||
timeout 10 curl -fsS --max-time 8 \
|
||||
-F "title=$1" -F "message=$2" -F "priority=8" \
|
||||
"${GOTIFY_URL%/}/message?token=${GOTIFY_TOKEN}" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# --- subcomandos --------------------------------------------------------------
|
||||
@@ -284,6 +306,19 @@ EOF
|
||||
echo ">> scaffold de $OVERRIDES_FILE creado (vacío, edítalo a mano)"
|
||||
fi
|
||||
|
||||
if [[ ! -f "$GOTIFY_ENV" ]]; then
|
||||
mkdir -p "$(dirname "$GOTIFY_ENV")"
|
||||
cat >"$GOTIFY_ENV" <<'EOF'
|
||||
# Token de aplicación Gotify para los avisos de fallo de pkgsync (push.josevi.ovh).
|
||||
# Crea una Application nueva en la UI de Gotify y pega su token aquí.
|
||||
# Fichero local-only: pkgsync nunca lo lee/escribe salvo aquí, no viaja al repo.
|
||||
#GOTIFY_URL="https://push.josevi.ovh"
|
||||
#GOTIFY_TOKEN="pon-aqui-el-token"
|
||||
EOF
|
||||
chmod 600 "$GOTIFY_ENV"
|
||||
echo ">> scaffold de $GOTIFY_ENV creado (comentado, edítalo a mano para activar avisos por Gotify)"
|
||||
fi
|
||||
|
||||
if [[ ! -d "$REPO_DIR/.git" ]]; then
|
||||
echo ">> clonando arch-setup en $REPO_DIR..."
|
||||
git clone "$REPO_URL" "$REPO_DIR"
|
||||
|
||||
Reference in New Issue
Block a user