1#!/usr/bin/env bash
2set -euo pipefail
3
4# Generate bundle composition artifacts for explicitly selected entry files.
5#
6# Usage:
7# scripts/bundle-analyze.sh [--output-dir <dir>] <file...>
8
9usage() {
10 echo "Usage: scripts/bundle-analyze.sh [--output-dir <dir>] <file...>"
11}
12
13OUTPUT_DIR="tmp/bundle-analysis"
14FILES=()
15
16while [ "$#" -gt 0 ]; do
17 case "$1" in
18 -o | --output-dir)
19 if [ "$#" -lt 2 ]; then
20 usage
21 exit 1
22 fi
23 OUTPUT_DIR="$2"
24 shift 2
25 ;;
26 -h | --help)
27 usage
28 exit 0
29 ;;
30 --)
31 shift
32 FILES+=("$@")
33 break
34 ;;
35 -*)
36 echo "Unknown option: $1" >&2
37 usage
38 exit 1
39 ;;
40 *)
41 FILES+=("$1")
42 shift
43 ;;
44 esac
45done
46
47if [ "${#FILES[@]}" -eq 0 ]; then
48 usage
49 exit 1
50fi
51
52ROOT="$(git rev-parse --show-toplevel)"
53
54cd "$ROOT"
55
56echo "Building current checkout..."
57pnpm build
58
59node packages/tools/bundle/src/bin.ts visualize-selected \
60 --output-dir "$OUTPUT_DIR" \
61 "${FILES[@]}"