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"