#!/usr/bin/env sh set -eu DOC_DIR="doc" TEX_FILE="${CARD_TEX_FILE:-generated/main.tex}" METADATA_TEX_FILE="${CARD_PDF_METADATA_TEX_FILE:-main.tex}" script_dir=$(CDPATH= cd "$(dirname "$0")" && pwd) repo_root=$(CDPATH= cd "$script_dir/.." && pwd) repo_name="${REPO_NAME:-$(basename "$repo_root")}" tex_path="$repo_root/$DOC_DIR/$TEX_FILE" metadata_tex_path="$repo_root/$DOC_DIR/$METADATA_TEX_FILE" tex_dir=$(dirname "$tex_path") tex_name=$(basename "$tex_path") read_tex_command() { sed -n "s/^\\\\newcommand{\\\\$1}{\\([^}]*\\)}$/\\1/p" "$metadata_tex_path" | head -n 1 } publisher_domain=$(read_tex_command PublisherDomain) card_area=$(read_tex_command CardArea) card_series=$(read_tex_command CardSeries) card_number=$(read_tex_command CardNumber) card_slug=$(read_tex_command CardSlug) card_version=$(read_tex_command CardVersion) document_uuid=$(read_tex_command DocumentUUID) if [ -z "$publisher_domain" ] || [ -z "$card_area" ] || [ -z "$card_series" ] || \ [ -z "$card_number" ] || [ -z "$card_slug" ] || [ -z "$card_version" ] || \ [ -z "$document_uuid" ]; then echo "missing PDF filename metadata in $metadata_tex_path" >&2 exit 1 fi if [ ! -f "$tex_path" ]; then echo "missing generated card TeX: $tex_path" >&2 exit 1 fi commit="${GITEA_SHA:-${GITHUB_SHA:-}}" if [ -z "$commit" ]; then commit=$(git -C "$repo_root" rev-parse HEAD) fi short_commit=$(printf '%s' "$commit" | cut -c1-12) meta_file="$tex_dir/build-meta.tex" tmp_meta="$meta_file.tmp.$$" cleanup() { rm -f \ "$meta_file" \ "$tmp_meta" \ "$tex_dir/${tex_name%.tex}.upa" \ "$tex_dir/${tex_name%.tex}.upb" } trap cleanup EXIT HUP INT TERM printf '\\newcommand{\\BuildCommit}{%s}\n' "$short_commit" > "$tmp_meta" mv "$tmp_meta" "$meta_file" pdf_out_dir="${PDF_OUT_DIR:-$repo_root/doc/pdf}" mkdir -p "$pdf_out_dir" out_dir=$(CDPATH= cd "$pdf_out_dir" && pwd) pdf_basename="$publisher_domain-$card_area-$card_series-$card_number-$card_slug-$card_version-$document_uuid.pdf" find "$out_dir" -maxdepth 1 -type f -name '*.pdf' -delete ( cd "$tex_dir" latexmk -pdf -interaction=nonstopmode -halt-on-error -outdir="$out_dir" "$tex_name" ) source_pdf="$out_dir/${tex_name%.tex}.pdf" target_pdf="$out_dir/$pdf_basename" if [ "$source_pdf" != "$target_pdf" ]; then mv "$source_pdf" "$target_pdf" fi find "$out_dir" -maxdepth 1 -type f \( \ -name '*.aux' -o \ -name '*.log' -o \ -name '*.out' -o \ -name '*.fls' -o \ -name '*.fdb_latexmk' -o \ -name '*.upa' -o \ -name '*.upb' \ \) -delete