mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-14 13:34:40 +00:00
ef6eb84921
Snapshot of the dockerisation-era bot code laid out at the repository root so it can be diffed directly against the working-copy baseline (restructure/working-copy-root) to see how the variant differed: - thin_client.py asyncio entrypoint (vs working_copy bot.py) - constants.py env-var/credential refactor, communication auth, etc. - extra gpt_interface/ service, sync.py, watch_script_params.py - conanjurer_* modules absent in this variant Docker infrastructure (docker/, docker-compose.yml, .dockerignore) intentionally omitted - this branch is for code comparison only and is not intended to be merged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
142 lines
5.0 KiB
Bash
Executable File
142 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# System-wide install & verify (Debian/RPi):
|
|
# - EB Garamond (APT)
|
|
# - Cinzel Decorative Black (RAW TTF)
|
|
# - IM Fell English SC (gstatic/RAW)
|
|
# No TeX build here. Very verbose + clear final report.
|
|
|
|
set -Eeuo pipefail
|
|
|
|
SUDO=sudo; [ "$(id -u)" -eq 0 ] && SUDO=
|
|
log(){ echo -e "[+] $*"; }
|
|
warn(){ echo -e "[WARN] $*" >&2; }
|
|
die(){ echo -e "[FATAL] $*" >&2; exit 1; }
|
|
|
|
need(){ command -v "$1" >/dev/null 2>&1 || die "Missing tool: $1"; }
|
|
fetch(){
|
|
local url="$1" out="$2"
|
|
if command -v wget >/dev/null 2>&1; then
|
|
log "wget -> $url"
|
|
wget -O "$out" --https-only --no-verbose "$url"
|
|
else
|
|
log "curl -> $url"
|
|
curl -L --fail --show-error --output "$out" "$url"
|
|
fi
|
|
}
|
|
|
|
# ---- detection using fc-list families (robust, no PCRE) ----
|
|
fc_families_lower() {
|
|
fc-list -f '%{family}\n' \
|
|
| tr ',' '\n' \
|
|
| sed 's/^[[:space:]]*//; s/[[:space:]]*$//' \
|
|
| tr '[:upper:]' '[:lower:]' \
|
|
| sort -u
|
|
}
|
|
has_family_re() { # $1 = POSIX ERE anchored-at-start pattern (lowercase)
|
|
fc_families_lower | grep -Eiq "$1"
|
|
}
|
|
|
|
# ---- prereqs ----
|
|
for t in fc-cache fc-list grep sed awk; do need "$t"; done
|
|
command- v wget >/dev/null 2>&1 || command -v curl >/dev/null 2>&1 || die "Need wget or curl"
|
|
|
|
SYSTEM_DIR="/usr/local/share/fonts/dj"
|
|
DIR_CINZEL="$SYSTEM_DIR/cinzel-decorative"
|
|
DIR_IMFELL="$SYSTEM_DIR/im-fell-english-sc"
|
|
$SUDO mkdir -p "$DIR_CINZEL" "$DIR_IMFELL"
|
|
|
|
echo "=== APT phase (EB Garamond) ==="
|
|
if command -v apt-get >/dev/null 2>&1; then
|
|
$SUDO apt-get update -y || warn "apt update failed (continuing)"
|
|
if $SUDO apt-get install -y --no-install-recommends fonts-ebgaramond; then
|
|
log "installed: fonts-ebgaramond"
|
|
else
|
|
warn "apt install failed: fonts-ebgaramond"
|
|
fi
|
|
else
|
|
warn "apt-get not found — skipping"
|
|
fi
|
|
|
|
echo
|
|
log "Families BEFORE web fallback (sample grep):"
|
|
fc-list | grep -Ei "Garamond|Cinzel|Fell" || echo " (none)"
|
|
|
|
echo
|
|
echo "=== Web fallback (system-wide to $SYSTEM_DIR) ==="
|
|
|
|
# --- Cinzel Decorative Black ---
|
|
CINZEL_TTF="$DIR_CINZEL/CinzelDecorative-Black.ttf"
|
|
if ! has_family_re '^cinzel decorative( |$)'; then
|
|
fetch "https://github.com/google/fonts/raw/main/ofl/cinzeldecorative/CinzelDecorative-Black.ttf" "$CINZEL_TTF" || warn "Cinzel Decorative Black download failed"
|
|
[ -s "$CINZEL_TTF" ] && $SUDO chmod 0644 "$CINZEL_TTF"
|
|
else
|
|
log "Cinzel Decorative already present."
|
|
fi
|
|
|
|
# --- IM Fell English SC ---
|
|
IMFELL_TTF="$DIR_IMFELL/IMFeENsc.ttf"
|
|
if ! has_family_re '^im fell english sc( |$)'; then
|
|
# Try known gstatic TTFs (stable direct links)
|
|
for u in \
|
|
"https://fonts.gstatic.com/s/imfellenglishsc/v7/h3Tn6yWfw4b5qaLD1RWvz5ATixNthKRRR1XVH3rJNiw.ttf" \
|
|
"https://fonts.gstatic.com/s/imfellenglishsc/v6/h3Tn6yWfw4b5qaLD1RWvz5ATixNthKRRR1XVH3rJNiw.ttf"
|
|
do
|
|
if fetch "$u" "$IMFELL_TTF"; then
|
|
[ -s "$IMFELL_TTF" ] && { $SUDO chmod 0644 "$IMFELL_TTF"; log "IM Fell SC from gstatic OK"; break; }
|
|
fi
|
|
done
|
|
# Secondary RAW in google/fonts (names changed over time)
|
|
if [ ! -s "$IMFELL_TTF" ]; then
|
|
for u in \
|
|
"https://github.com/google/fonts/raw/main/ofl/imfellenglishsc/IMFeENsc28P.ttf" \
|
|
"https://github.com/google/fonts/raw/main/ofl/imfellenglishsc/IMFellEnglishSC-Regular.ttf"
|
|
do
|
|
if fetch "$u" "$IMFELL_TTF"; then
|
|
[ -s "$IMFELL_TTF" ] && { $SUDO chmod 0644 "$IMFELL_TTF"; log "IM Fell SC from google/fonts RAW OK"; break; }
|
|
fi
|
|
done
|
|
fi
|
|
# Minimal mirror fallback (only if naprawdę trzeba)
|
|
if [ ! -s "$IMFELL_TTF" ]; then
|
|
for u in \
|
|
"https://www.wfonts.com/download/data/2016/06/14/im-fell-english-sc/IMFeENsc28P.ttf" \
|
|
"https://www.1001freefonts.com/d/6800/IMFeENsc28P.ttf"
|
|
do
|
|
fetch "$u" "$IMFELL_TTF" || true
|
|
[ -s "$IMFELL_TTF" ] && { $SUDO chmod 0644 "$IMFELL_TTF"; log "IM Fell SC from mirror OK"; break; }
|
|
done
|
|
fi
|
|
[ -s "$IMFELL_TTF" ] || warn "IM Fell English SC still missing."
|
|
else
|
|
log "IM Fell English SC already present."
|
|
fi
|
|
|
|
echo
|
|
log "Fix perms & rebuild cache..."
|
|
$SUDO find "$SYSTEM_DIR" -type f -size 0 -print -delete || true
|
|
$SUDO find "$SYSTEM_DIR" -type f \( -name "*.ttf" -o -name "*.otf" \) -exec chmod 0644 {} \; || true
|
|
$SUDO find "$SYSTEM_DIR" -type d -exec chmod 0755 {} \; || true
|
|
$SUDO fc-cache -f -v >/dev/null || warn "fc-cache returned non-zero"
|
|
|
|
# ---- FINAL REPORT ----
|
|
echo
|
|
log "FINAL STATUS (fc-list families & file presence)"
|
|
families="$(fc_families_lower)"
|
|
|
|
report(){
|
|
local label="$1" fam_re="$2" file_hint="$3"
|
|
local fam_ok file_ok="n/a"
|
|
if echo "$families" | grep -Eiq "$fam_re"; then fam_ok="OK"; else fam_ok="MISSING"; fi
|
|
if [ -n "$file_hint" ]; then
|
|
if [ -s "$file_hint" ]; then file_ok="yes"; else file_ok="no"; fi
|
|
fi
|
|
printf " %-22s : families=%-8s file=%-3s (%s)\n" "$label" "$fam_ok" "$file_ok" "${file_hint:-no-file-hint}"
|
|
}
|
|
|
|
report "EB Garamond" '^eb garamond( |$)' "" # from APT
|
|
report "Cinzel Decorative" '^cinzel decorative( |$)' "$CINZEL_TTF"
|
|
report "IM Fell English SC" '^im fell english sc( |$)' "$IMFELL_TTF"
|
|
|
|
echo
|
|
log "Done. (Run your LaTeX pipeline next.)"
|