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.
|
# borra en el primer push que vuelve a tener éxito.
|
||||||
FAIL_MARKER="$HOME/.local/share/pkgsync.failed"
|
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
|
# 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
|
# install_flatpaks() en packages-common.sh. Si tu máquina usa --user, cambia
|
||||||
# esto (o verifica con: flatpak list --columns=installation,application).
|
# esto (o verifica con: flatpak list --columns=installation,application).
|
||||||
@@ -235,6 +241,22 @@ notify_fail() {
|
|||||||
echo "!! $1: $2" >&2
|
echo "!! $1: $2" >&2
|
||||||
printf '%s -- %s: %s\n' "$(date -Iseconds)" "$1" "$2" >"$FAIL_MARKER"
|
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"
|
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 --------------------------------------------------------------
|
# --- subcomandos --------------------------------------------------------------
|
||||||
@@ -284,6 +306,19 @@ EOF
|
|||||||
echo ">> scaffold de $OVERRIDES_FILE creado (vacío, edítalo a mano)"
|
echo ">> scaffold de $OVERRIDES_FILE creado (vacío, edítalo a mano)"
|
||||||
fi
|
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
|
if [[ ! -d "$REPO_DIR/.git" ]]; then
|
||||||
echo ">> clonando arch-setup en $REPO_DIR..."
|
echo ">> clonando arch-setup en $REPO_DIR..."
|
||||||
git clone "$REPO_URL" "$REPO_DIR"
|
git clone "$REPO_URL" "$REPO_DIR"
|
||||||
|
|||||||
Reference in New Issue
Block a user