Files
ua-userscripts/scripts/select-search/build.sh
T
Glenn Goossens 702f8b876f Add 'scripts/select-search/' from commit '98095f3fc6f9a86e3b64b7c7ba14d299259fc7e2'
git-subtree-dir: scripts/select-search
git-subtree-mainline: e5bd11259f
git-subtree-split: 98095f3fc6
2026-08-29 13:34:58 +02:00

67 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Bouwt het userscript en de bookmarklet uit src/select-search.js.
# Gebruik: ./build.sh (de bookmarklet belandt ook meteen in het klembord)
set -euo pipefail
here="$(cd "$(dirname "$0")" && pwd)"
src="$here/src/select-search.js"
hdr="$here/src/userscript-header.txt"
dist="$here/dist"
for f in "$src" "$hdr"; do
if [ ! -f "$f" ]; then
echo "build.sh: ontbrekend bestand: $f" >&2
exit 1
fi
done
if ! command -v python3 >/dev/null 2>&1; then
echo "build.sh: python3 is nodig om de bookmarklet te encoderen" >&2
exit 1
fi
if grep -q 'MATCH_PLACEHOLDER' "$hdr"; then
echo "build.sh: vul eerst de echte @match-URL in $hdr in" >&2
exit 1
fi
mkdir -p "$dist"
# 1. Userscript = metadatablok + ongewijzigde core.
cat "$hdr" "$src" > "$dist/select-search.user.js"
# 2. Bookmarklet = core, URL-encoded achter javascript:.
python3 - "$src" "$dist/bookmarklet.txt" <<'PY'
import io, sys, urllib.parse
src, out = sys.argv[1], sys.argv[2]
code = io.open(src, encoding='utf-8').read()
# Regelcommentaar sneuvelt zodra alles op een regel staat; strip het weg.
lines = []
for line in code.split('\n'):
stripped = line.strip()
if stripped.startswith('//'):
continue
lines.append(line)
code = '\n'.join(lines)
# Een bladwijzerbeheerder mag de nieuwe regels weggooien zonder dat de
# bookmarklet stukgaat: dus geen enkel regelcommentaar meer overhouden.
for n, line in enumerate(code.split('\n'), 1):
if '//' in line:
sys.exit('build.sh: regelcommentaar op regel %d breekt de bookmarklet: %s'
% (n, line.strip()))
url = 'javascript:' + urllib.parse.quote(code, safe="!#$&'()*+,-./:;=?@_~")
io.open(out, 'w', encoding='utf-8').write(url)
print('bookmarklet: %d tekens' % len(url))
PY
if command -v pbcopy >/dev/null 2>&1; then
pbcopy < "$dist/bookmarklet.txt"
echo "bookmarklet gekopieerd naar het klembord"
fi
echo "geschreven: $dist/select-search.user.js"
echo "geschreven: $dist/bookmarklet.txt"