view 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 source

#!/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"