publisher-uaproxy-banner: red bar and Connect button on publisher pages when the UA proxy is down

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Glenn Goossens
2026-10-19 11:15:06 +02:00
co-authored by Claude Sonnet 5.5
parent abdcb59a3a
commit c88781a406
3 changed files with 192 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
# Rewrites the @match lines of publisher-uaproxy-banner.user.js from the one publisher list
# (dotfiles lib/uaproxy/publishers.txt), so the list stays the single source.
# Usage: sync-matches [--check|-c] [--help|-h]
# --check, -c change nothing, exit 1 when the @match lines differ from the list
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
SCRIPT="$HERE/publisher-uaproxy-banner.user.js"
LIST="${PUBLISHERS:-$HOME/dotfiles/lib/uaproxy/publishers.txt}"
CHECK=false
while [[ $# -gt 0 ]]; do
case "$1" in
--check|-c) CHECK=true; shift ;;
--help|-h) sed -n '2,5p' "$0" | sed 's/^# \{0,1\}//'; exit 0 ;;
*) echo "Error: unknown option: $1" >&2; exit 1 ;;
esac
done
[[ -f "$LIST" ]] || { echo "Error: publisher list not found: $LIST" >&2; exit 1; }
matches=$(sed 's/#.*//; s/[[:space:]]//g; /^$/d' "$LIST" | awk '{ printf "// @match *://*.%s/*\n", $0 }')
new=$(MATCHES="$matches" awk '
/^\/\/ @match / { if (!done) { print ENVIRON["MATCHES"]; done = 1 } ; next }
{ print }' "$SCRIPT")
if $CHECK; then
[[ "$new" == "$(cat "$SCRIPT")" ]] || { echo "Error: @match lines differ from $LIST; run sync-matches" >&2; exit 1; }
else
printf '%s\n' "$new" > "$SCRIPT"
fi