aboutsummaryrefslogtreecommitdiff
path: root/spark-shell
diff options
context:
space:
mode:
authorEvan Chan <ev@ooyala.com>2013-06-24 23:55:09 -0700
committerEvan Chan <ev@ooyala.com>2013-06-24 23:55:09 -0700
commitcee05a174897af294f52cbda551da09cb869557e (patch)
treeefc194f1dfb8b1527e8cf32e95e2d9c1193eee7a /spark-shell
parent81df20e5b44407c8c321471be2faee4bf6853fd6 (diff)
downloadspark-cee05a174897af294f52cbda551da09cb869557e.tar.gz
spark-cee05a174897af294f52cbda551da09cb869557e.tar.bz2
spark-cee05a174897af294f52cbda551da09cb869557e.zip
Copy restore-TTY functions from Scala script so binary distros don't need 'scala' installed
Diffstat (limited to 'spark-shell')
-rwxr-xr-xspark-shell39
1 files changed, 36 insertions, 3 deletions
diff --git a/spark-shell b/spark-shell
index 574ae2104d..afbb7a9a8e 100755
--- a/spark-shell
+++ b/spark-shell
@@ -1,4 +1,37 @@
-#!/bin/sh
+#!/bin/bash --posix
FWDIR="`dirname $0`"
-export SPARK_LAUNCH_WITH_SCALA=1
-exec $FWDIR/run spark.repl.Main "$@"
+
+# Copy restore-TTY-on-exit functions from Scala script so spark-shell exits properly even in
+# binary distribution of Spark where Scala is not installed
+exit_status=127
+saved_stty=""
+
+# restore stty settings (echo in particular)
+function restoreSttySettings() {
+ stty $saved_stty
+ saved_stty=""
+}
+
+function onExit() {
+ if [[ "$saved_stty" != "" ]]; then
+ restoreSttySettings
+ fi
+ exit $exit_status
+}
+
+# to reenable echo if we are interrupted before completing.
+trap onExit INT
+
+# save terminal settings
+saved_stty=$(stty -g 2>/dev/null)
+# clear on error so we don't later try to restore them
+if [[ ! $? ]]; then
+ saved_stty=""
+fi
+
+$FWDIR/run spark.repl.Main "$@"
+
+# record the exit status lest it be overwritten:
+# then reenable echo and propagate the code.
+exit_status=$?
+onExit