#!/bin/sh
# joltc — the pure-Chez jolt runtime. NO Janet.
#
# Compiles and evaluates jolt (Clojure) on Chez using the checked-in bootstrap
# seed (host/chez/seed/). With only Chez installed it runs jolt end to end:
#
#   joltc -e "(+ 1 2)"             evaluate an expression
#   joltc run -m app.core [args]   resolve deps.edn, run a namespace's -main
#   joltc -M:alias [args]          run an alias's :main-opts
#   joltc repl | path | <task>     REPL, print roots, or a deps.edn task
#
# The launcher cd's to the jolt repo root so the runtime's relative loads work;
# the user's original cwd (the project dir, where deps.edn lives) is passed in
# JOLT_PWD.
root="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
export JOLT_PWD="${JOLT_PWD:-$PWD}"

# Identify the Chez Scheme executable
while read -r CHEZ
do
    if [ `which ${CHEZ}` ]
    then
	break;
    fi
done <<EOF
chez
chezscheme
EOF

# If we failed to find one, whinge and exit.
if [ ! `which ${CHEZ}` ]
then
    echo "No valid Chez Scheme executable found: please install Chez Scheme."
    exit 1
fi

# Version for --version / banners: git describe of this checkout, else "dev".
export JOLT_VERSION="${JOLT_VERSION:-$(git -C "$root" describe --tags --always --dirty 2>/dev/null || echo dev)}"
cd "$root" || exit 1
exec ${CHEZ} --script host/chez/cli.ss "$@"

