62 lines
1.4 KiB
Bash
Executable file
62 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# Exit status codes:
|
|
# 0 = Version reported correctly
|
|
# 1 = Error
|
|
|
|
TWS_TIMEOUT="15"
|
|
|
|
if ! test -e "$1"; then
|
|
echo "Usage: $0 <sh>" 1>&2
|
|
echo "Example: $0 $HOME/.tws_scripts/tws-latest-standalone-linux-x64.sh" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
# Clean up installation directories if required and install new version
|
|
rm -rf $HOME/Jts $HOME/.install4j $HOME/.i4j_jres $HOME/tws
|
|
mkdir -p $HOME/Jts
|
|
|
|
# Install TWS
|
|
ARG1="$(readlink -v -f "$1")" || exit 1
|
|
chmod +x ${ARG1}
|
|
${ARG1} -q &> /dev/null
|
|
|
|
# Run TWS in virtual frame buffer
|
|
LOG="$HOME/Jts/launcher.log"
|
|
/usr/sbin/xvfb-run -n 99 $HOME/tws/tws &
|
|
|
|
# Wait for TWS JVM to start writing to $LOG
|
|
while [ ! -f $LOG ]; do
|
|
inotifywait -q -q -t 10 -e create --format '%f' $HOME/Jts
|
|
if [ $? -eq 2 ] && [ ! -f $LOG ]; then
|
|
echo "Error: $LOG not found"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Wait for $LOG to contain version ("Build") line
|
|
for count in {0..10}; do
|
|
grep -q ' - Build' $LOG
|
|
if [ $? -eq 0 ]; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# Kill process now that version line or timeout was reached
|
|
pkill -9 -f tws/jars/ &> /dev/null
|
|
|
|
# Clean up ready for next run
|
|
rm -rf $HOME/.install4j $HOME/.i4j_jres $HOME/tws
|
|
|
|
# Extract version line from log now the JVM has exited
|
|
VERSION_LINE=$(grep -m1 ' - Build' $LOG)
|
|
if [ $? -eq 0 ]; then
|
|
echo "${VERSION_LINE}" |sed -e 's/.*Build //1' -e 's/,.*//1'
|
|
exit 0
|
|
fi
|
|
|
|
echo "could not grep version string; final log appears below" 1>&2
|
|
cat $LOG 1>&2
|
|
exit 1
|