blob: 976a6352a980b1ade7a5b79f580620ae03d790ec [file] [log] [blame]
installdir="$HOME/.eclipsesettings"
if test ! -d $installdir; then
mkdir $installdir
if test ! -d $installdir; then
echo fail:cannot create $installdir
exit 1
fi
fi
cat > $installdir/bootstrap.sh <<-\EOF
#!/bin/sh
installdir="$HOME/.eclipsesettings"
proxytmp=$installdir/proxy.b64
success=false
cleanup() {
rm -f $installdir/bootstrap.sh
}
trap 'cleanup' EXIT
parent_is_not_orphan () {
parent=`ps -ef|awk '$2=='$$'{print $3}'`
let parent=$parent+0
if [[ $parent -eq 1 ]]; then
return 1
fi
return 0
}
do_check() {
java_vers=`java -version 2>&1`
case "$java_vers" in
*"not found")
echo "fail:could not find a valid java installation"
return
;;
esac
major=`expr "$java_vers" : ".* version \"\([0-9]*\)\.[0-9]*.*\""`
minor=`expr "$java_vers" : ".* version \"[0-9]*\.\([0-9]*\).*\""`
if test "$major" -ge 2 -o "$minor" -ge 8; then
:
else
echo "fail:invalid java version $major.$minor; must be >= 1.8"
return
fi
case "`uname`" in
Linux)
osname="linux";
osarch=`uname -m`;
proxydir=$installdir/proxy;
plugins=$proxydir/plugins;;
Darwin)
osname="macosx";
osarch=`uname -m`;
proxydir=$installdir/Proxy.app;
plugins=$proxydir/Contents/Eclipse/plugins;;
*)
echo fail:system not supported;
return;;
esac
proxy=not_found
if test -d $proxydir; then
bundle="org.eclipse.remote.proxy.server.core_$1.jar"
if test -f $plugins/$bundle; then
proxy=found
else
mv $proxydir $proxydir.pre_$1
fi
fi
echo ok:$proxy/$osname/$osarch
}
do_download() {
dd of=$proxytmp ibs=680 count=$1
IFS= read -r last
echo "$last" >> $proxytmp
base64 --decode < $proxytmp | (cd $installdir && tar zxvf -) > /dev/null 2>&1
if test $? -eq 0; then
echo ok
else
echo fail:download failed
fi
}
#
# Start java in background so we can clean up after connection is dropped. The only way to tell if this
# has happened is to poll if ppid has changed to 1 (i.e. we no longer have a controlling terminal)
#
start_server() {
# enable debugoptions in order to attach a debugger
#debugoptions="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044,quiet=y"
# use globbing to find launcher version
java -cp $plugins/org.eclipse.equinox.launcher_1.*.jar \
$debugoptions \
org.eclipse.equinox.launcher.Main \
-application org.eclipse.remote.proxy.server.core.application \
-noExit 0<&0 &
pid=$!
trap 'kill $pid; exit' HUP INT TERM
while parent_is_not_orphan; do
sleep 10
done
kill $pid
}
echo running
while read line arg; do
case $line in
check) do_check $arg;;
download) do_download $arg;;
start) start_server;;
exit) break;;
*) echo fail:unrecognized command:$line; exit 1;;
esac
done
exit 0
EOF
chmod 755 $installdir/bootstrap.sh
exec $installdir/bootstrap.sh