mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-21 22:02:06 +01:00
48 lines
1.1 KiB
Bash
Executable file
48 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
JDWP=false
|
|
JDWP_PORT=8000
|
|
|
|
while getopts djp: OPTION "$@"; do
|
|
case $OPTION in
|
|
d)
|
|
set -x
|
|
;;
|
|
j)
|
|
JDWP=true
|
|
;;
|
|
p)
|
|
JDWP_PORT=$OPTARG
|
|
;;
|
|
esac
|
|
done
|
|
|
|
EXTRA_JAVA_ARGS=()
|
|
if $JDWP; then
|
|
EXTRA_JAVA_ARGS+=("-Xdebug")
|
|
EXTRA_JAVA_ARGS+=("-Xrunjdwp:server=y,transport=dt_socket,address=${JDWP_PORT},suspend=n")
|
|
fi
|
|
|
|
PROJECT_ROOT=$(dirname "${BASH_SOURCE[0]}")
|
|
cd "${PROJECT_ROOT}"
|
|
|
|
echo "Compiling and computing classpath (May take a while)"
|
|
# Sadly even with the --quiet option Gradle (or some component of)
|
|
# will print the number of warnings/errors to stdout if there are
|
|
# any. So the result could look like
|
|
# 52 warnings\n1 warning\n12 warnings\n
|
|
# /smack/smack-repl/build/classes/main:/smack/smack-repl/build/
|
|
# resources/main:/smack/smack-tcp/build/libs/smack-tcp-4.2.0-alpha4-SNAPSHOT.jar
|
|
# So perform a "tail -n1" on the output of gradle
|
|
GRADLE_CLASSPATH="$(gradle :smack-repl:printClasspath --quiet |\
|
|
tail -n1)"
|
|
echo "Finished, starting REPL"
|
|
|
|
java "${EXTRA_JAVA_ARGS[@]}" \
|
|
-Dscala.usejavacp=true \
|
|
-classpath "${GRADLE_CLASSPATH}" \
|
|
ammonite.Main \
|
|
--predef "smack-repl/scala.repl"
|