summaryrefslogtreecommitdiff
path: root/Biz/Ide/repl.sh
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2024-11-15 14:55:37 -0500
committerBen Sima <ben@bsima.me>2024-12-21 10:06:49 -0500
commit6513755670892983db88a6633b8c1ea6019c03d1 (patch)
tree44e9eccdb7a3a74ab7e96a8fee7572dd6a78dc73 /Biz/Ide/repl.sh
parentae7b7e0186b5f2e0dcd4d5fac0a71fa264caedc2 (diff)
Re-namespace some stuff to Omni
I was getting confused about what is a product and what is internal infrastructure; I think it is good to keep those things separate. So I moved a bunch of stuff to an Omni namespace, actually most stuff went there. Only things that are explicitly external products are still in the Biz namespace.
Diffstat (limited to 'Biz/Ide/repl.sh')
-rwxr-xr-xBiz/Ide/repl.sh84
1 files changed, 0 insertions, 84 deletions
diff --git a/Biz/Ide/repl.sh b/Biz/Ide/repl.sh
deleted file mode 100755
index ceedb71..0000000
--- a/Biz/Ide/repl.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/env bash
-###
-### a simple complement to bild which only deals with launching repls
-###
-### > repl [opts] <target..>
-###
-### Starts a repl/shell for one or more targets. (Currently, all targets must
-### have the same extension for this to work.) Repls started with this script
-### should bind to `localhost:$PORT`.
-###
-### Options:
-### --bash start bash instead of the target language repl
-help() {
- sed -rn 's/^### ?//;T;p' "$0"
-}
-if [[ $# == 0 ]] || [[ "$1" == "-h" ]]; then
- help
- exit 1
-fi
-##
- set -e
- CMD=
- if [[ "$1" == "--bash" ]]; then
- CMD="bash"
- shift
- fi
- targets="${*:?}"
- json=$(bild --plan "${targets[@]}")
- mapfile -t langdeps < <(jq --raw-output '.[].langdeps | select(length > 0) | join("\n")' <<< "$json")
- mapfile -t sysdeps < <(jq --raw-output '.[].sysdeps | select(length > 0) | join("\n")' <<< "$json")
- mapfile -t rundeps < <(jq --raw-output '.[].rundeps | select(length > 0) | join("\n")' <<< "$json")
- exts=$(jq --raw-output '.[].namespace.ext' <<< "$json" | sort | uniq)
- packageSet=$(jq --raw-output '.[].packageSet' <<< "$json")
- module=$(jq --raw-output '.[].mainModule' <<< "$json")
- BILD="(import ${CODEROOT:?}/Biz/Bild.nix {})"
- declare -a flags=(--packages "$BILD.pkgs.pkg-config")
- for lib in "${sysdeps[@]}"; do
- flags+=(--packages "$BILD.pkgs.${lib}")
- done
- for lib in "${rundeps[@]}"; do
- flags+=(--packages "$BILD.pkgs.${lib}")
- done
- case $exts in
- C)
- flags+=(--packages "$BILD.pkgs.gcc")
- command="bash"
- ;;
- Hs)
- if [ -z ${var+PORT} ]; then
- echo "warn: repl: ghci does not support binding to a port"
- fi
- flags+=(--packages "$BILD.haskell.ghcWith (h: with h; [${langdeps[*]}])")
- command=${CMD:-"ghci -i${CODEROOT:?} -ghci-script ${CODEROOT:?}/.ghci ${targets[@]}"}
- ;;
- Scm)
- for lib in "${langdeps[@]}"; do
- flags+=(--packages "$BILD.guile-${lib}")
- done
- flags+=(--packages "$BILD.guile")
- command=${CMD:-"guile -L ${CODEROOT:?} -C ${CODEROOT:?}/_/int --r7rs --listen=${PORT:-37146}"}
- ;;
- Lisp)
- flags+=(--packages "$BILD.$packageSet (p: with p; [asdf swank ${langdeps[*]}])")
- command=${CMD:-"sbcl --eval '(require :asdf)' --eval '(require :swank)' --eval '(swank:create-server :port ${PORT:-4005})' --load $targets"}
- ;;
- Rs)
- flags+=(--packages "$BILD.pkgs.rustc")
- command=bash
- ;;
- Py)
- langdeps+=("mypy")
- flags+=(--packages "$BILD.python.pythonWith (p: with p; [${langdeps[*]}])")
- PYTHONPATH=$CODEROOT:$PYTHONPATH
- pycommand="python -i $CODEROOT/Biz/Repl.py $module ${targets[*]}"
- command=${CMD:-"$pycommand"}
- ;;
- *)
- echo "unsupported targets: ${targets[*]}"
- exit 1
- ;;
- esac
-##
- nix-shell "${flags[@]}" --command "$command" --show-trace
-##