Mercurial
diff mrjunejune/generate_resume_pdf.sh @ 234:1de6f553cbc0
[resume] Add Microsoft Member of Technical Staff role
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 02 Aug 2026 18:27:15 -0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mrjunejune/generate_resume_pdf.sh Sun Aug 02 18:27:15 2026 -0700 @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ -n "${RUNFILES_DIR:-}" ]]; then + source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash" +elif [[ -n "${RUNFILES_MANIFEST_FILE:-}" ]]; then + runfiles_library="$( + grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \ + "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2- + )" + source "$runfiles_library" +elif [[ -d "$0.runfiles" ]]; then + RUNFILES_DIR="$0.runfiles" + export RUNFILES_DIR + source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash" +elif [[ -f "$0.runfiles_manifest" ]]; then + RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" + export RUNFILES_MANIFEST_FILE + runfiles_library="$( + grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \ + "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2- + )" + source "$runfiles_library" +else + echo "Bazel runfiles are unavailable." >&2 + exit 1 +fi + +workspace="${BUILD_WORKSPACE_DIRECTORY:-}" +if [[ -z "$workspace" || ! -d "$workspace/.hg" ]]; then + echo "Run this target from the Zenbu workspace." >&2 + exit 1 +fi + +server="$(rlocation _main/mrjunejune/mrjunejune_server)" +browser="$(rlocation playwright_chromium_linux/chrome)" +runfiles_workspace="$(dirname "$(dirname "$server")")" +output="$workspace/mrjunejune/src/public/resume.pdf" +source_copy="$workspace/mrjunejune/src/resume.pdf" +temporary_pdf="$(mktemp --suffix=.pdf)" +browser_profile="$(mktemp -d)" +server_pid="" + +cleanup() { + trap - EXIT INT TERM + if [[ -n "$server_pid" ]] && kill -0 "$server_pid" 2>/dev/null; then + kill "$server_pid" 2>/dev/null || true + wait "$server_pid" 2>/dev/null || true + fi + rm -f "$temporary_pdf" + rm -rf "$browser_profile" +} +trap cleanup EXIT +trap 'exit 130' INT TERM + +( + cd "$runfiles_workspace" + exec "$server" +) & +server_pid=$! + +for _ in $(seq 1 100); do + if curl --fail --silent --max-time 1 http://127.0.0.1:6969/resume >/dev/null; then + break + fi + if ! kill -0 "$server_pid" 2>/dev/null; then + echo "Personal-site server exited before PDF generation." >&2 + exit 1 + fi + sleep 0.1 +done + +curl --fail --silent --max-time 1 http://127.0.0.1:6969/resume >/dev/null +"$browser" \ + --headless \ + --no-sandbox \ + --disable-gpu \ + --no-pdf-header-footer \ + --user-data-dir="$browser_profile" \ + --print-to-pdf="$temporary_pdf" \ + http://127.0.0.1:6969/resume + +test -s "$temporary_pdf" +install -m 0644 "$temporary_pdf" "$output" +install -m 0644 "$temporary_pdf" "$source_copy" +echo "Updated $output"