This PR adds per-package server options to resolve #2455. It is based on the previous work in #2456, but takes a different approach: options are loaded for the specific file in the file worker when `print-paths` is called, instead of loading them in the watchdog with a separate Lake command. This change addresses review comments made in #2456. In doing so, it introduces two new Lake config fields: - `leanOptions`: `-D` flag options that are passed to both the language server and `lean` when building. - `moreServerOptions`: `-D` flag options that are passed to the language server. Since `print-paths` must also accept a file path to compute the options for that file, this PR is changing the API for `print-paths`. As there have been numerous complaints about the name `print-paths`, I also decided to change it to `setup-file` in this PR, since it would break compatibility with the old Lake API anyways. This PR deprecates the Lakefile field `moreServerArgs` in favor of `moreGlobalServerArgs`, as suggested in the review for #2456. Fixes #2455 --------- Co-authored-by: digama0 <mcarneir@andrew.cmu.edu>
42 lines
1.1 KiB
Bash
42 lines
1.1 KiB
Bash
#!@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
|