blob: dfd8c3dedd17ce5622d9c443824385daa1e001dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/usr/bin/env bash
#
# a simple complement to bild which only deals with launching repls
#
# > repl <target..>
#
# Starts a repl/shell for one or more targets. (Currently, all targets must have
# the same extension for this to work.)
##
set -e
targets=${@:?}
json=$(bild --json ${targets[@]})
langdeps=$(jq --raw-output '.langdeps | join(" ")' <<< $json)
exts=$(jq --raw-output '.namespace.ext' <<< $json | sort | uniq)
case $exts in
Hs)
nix-shell \
--packages "(import $BIZ_ROOT/Biz/Bild.nix {}).private.ghcWith (h: with h; [$langdeps])" \
--command "ghci -i$BIZ_ROOT -ghci-script $BIZ_ROOT/.ghci ${targets[@]}"
;;
Scm)
flags=()
for lib in ${langdeps[@]}; do
flags+=(--packages "(import $BIZ_ROOT/Biz/Bild.nix {}).private.nixpkgs.guile-${lib}")
done
nix-shell \
--packages "(import $BIZ_ROOT/Biz/Bild.nix {}).private.nixpkgs.guile_3_0" \
${flags[@]} \
--command "guile -L $BIZ_ROOT -C $BIZ_ROOT/_/int --r7rs --listen"
;;
Lisp)
nix-shell \
--packages "(import $BIZ_ROOT/Biz/Bild.nix {}).private.sbclWith (p: with p; [asdf swank $langdeps])" \
--command "sbcl --eval '(require :asdf)' --eval '(require :swank)' --eval '(swank:create-server)' --load $targets"
;;
*)
echo "unsupported targets: ${targets[@]}"
exit 1
;;
esac
##
|