| #!@bash@/bin/bash | |
| set -euo pipefail | |
| function pebkac() { | |
| echo 'This is just a simple Nix adapter for `lake print-paths|serve`.' | |
| exit 1 | |
| } | |
| [[ $# -gt 0 ]] || pebkac | |
| case $1 in | |
| --version) | |
| # minimum version for `lake serve` with fallback | |
| echo 3.1.0 | |
| ;; | |
| print-paths) | |
| shift | |
| deps="$@" | |
| root=. | |
| # fall back to initial package if not in package | |
| [[ ! -f "$root/flake.nix" ]] && root="@srcRoot@" | |
| target="$root#print-paths" | |
| args=() | |
| # HACK: use stage 0 instead of 1 inside Lean's own `src/` | |
| [[ -d Lean && -f ../flake.nix ]] && target="@srcTarget@print-paths" && args=@srcArgs@ | |
| for dep in $deps; do | |
| target="$target.\"$dep\"" | |
| done | |
| echo "Building dependencies..." >&2 | |
| # -v only has "built ...", but "-vv" is a bit too verbose | |
| exec @nix@/bin/nix run "$target" ${args[*]} -v | |
| ;; | |
| serve) | |
| shift | |
| [[ ${1:-} == "--" ]] && shift | |
| # `link-ilean` puts them there | |
| LEAN_PATH=${LEAN_PATH:+$LEAN_PATH:}$PWD/build/lib exec $(dirname $0)/lean --server "$@" | |
| ;; | |
| *) | |
| pebkac | |
| ;; | |
| esac |