-
-
Save paralin/91cee4de01016c1cfdd6e2b238722d8e to your computer and use it in GitHub Desktop.
omp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # Dev launcher for the omp CLI, installed by `bun run setup`. | |
| # | |
| # Problem it solves: Bun reads `bunfig.toml` from the *current working | |
| # directory* at startup and evaluates its `preload` entries before running the | |
| # script. A bun-shebang bin (what `bun link` creates for `src/cli.ts`) | |
| # therefore inherits whatever `preload` the directory you happen to be in | |
| # declares. Running `omp`/`pi` inside an unrelated Bun project can execute — and | |
| # crash on — that project's preload, e.g. | |
| # error: Cannot find module '@v12sh/utils/frontmatter' from '.../loader.ts' | |
| # | |
| # Bun only reads the *exact* cwd (it does not walk parents) and ignores | |
| # `--config`/`BUN_BE_BUN` for this, so the fix is to launch Bun from an empty, | |
| # bunfig-free directory and restore the real cwd inside the process via the | |
| # preload shim alongside this file. | |
| set -e | |
| # Resolve this script's real location even when invoked through a symlink | |
| # (`$HOME/.bun/bin/omp` -> this file). | |
| self=$0 | |
| while [ -L "$self" ]; do | |
| link=$(readlink "$self") | |
| case $link in | |
| /*) self=$link ;; | |
| *) self=$(dirname "$self")/$link ;; | |
| esac | |
| done | |
| scripts_dir=$(CDPATH= cd -- "$(dirname -- "$self")" && pwd -P) | |
| cli=$scripts_dir/../src/cli.ts | |
| preload=$scripts_dir/omp.ts | |
| timing_preload=$scripts_dir/../../utils/src/module-timer.ts | |
| launch_dir=${OMP_DEV_LAUNCH_DIR:-${HOME}/.omp/.dev-cwd} | |
| mkdir -p "$launch_dir" | |
| OMP_LAUNCH_CWD=$PWD | |
| export OMP_LAUNCH_CWD | |
| cd "$launch_dir" | |
| if [ -n "${PI_TIMING:-}" ]; then | |
| exec bun --preload "$preload" --preload "$timing_preload" "$cli" "$@" | |
| fi | |
| exec bun --preload "$preload" "$cli" "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment