#!/bin/bash

# for macOS
#
# TightVNC Java Viewer 2.8.3が最近のmacOSのJavaで動かないので、パッチを
# 当てて、動くようにするシェルスクリプトです。バージョン7以上11以下のJavaが
# 必要です。パッチに関する詳細については、下記記載のパッチのURLからダウン
# ロードしたものをご覧下さい。
# このシェルスクリプトを実行すると、TightVNC Java Viewer 2.8.3のソースと、
# それに対するパッチをダウンロードして、ソースにパッチを当ててビルドし、
# jarを作成してDesktopに置きます。最後に「OK」と出れば成功です。

set -e

if javac -version 2>&1 | awk '
	$1 == "javac" && $2 ~ /^(1\.[78]|9|1[01])(.|$)/{ok = 1}
	END{exit(ok ? 0 : 1)}
'; then
	true
else
	echo Java version between 7 and 11 is required. >&2
	exit 1
fi

trap '' HUP INT QUIT PIPE TERM
TMPD="`mktemp -d "$HOME"/.tmp.XXXXXX`"
GDIR="$HOME"/.gradle
GBAK="$TMPD"/.gradle.bak
if [ -d "$GDIR" ]; then
	mv "$GDIR" "$GBAK"
fi
trap '
	STA=$?
	trap : EXIT
	trap "" HUP INT QUIT PIPE TERM
	if [ -d "$GDIR" ]; then
		mv "$GDIR" "$TMPD"/.dummy
	fi
	if [ -d "$GBAK" ]; then
		mv "$GBAK" "$GDIR"
	fi
	cd
	rm -rf "$TMPD" &
	exit $STA
' EXIT HUP INT QUIT PIPE TERM
cd "$TMPD"

# TightVNC Java Viewer 2.8.3のソースのURL
TVJURL=https://www.tightvnc.com/download/2.8.3/tvnjviewer-2.8.3-src-gnugpl.zip
curl -f "$TVJURL" > tmp.zip || {
	echo Failed to download "$TVJURL". Try later. >&2
	exit 1
}

# TightVNC Java Viewer 2.8.3に対するパッチのURL
TVJPATCHURL=https://hayabusa.ics.nara-wu.ac.jp/pub/nide/misc/tvnjviewer-2.8.3.local-patch
curl -f "$TVJPATCHURL" > tvnj.patch || {
	echo Failed to download "$TVJPATCHURL". Try later. >&2
	exit 1
}

unzip tmp.zip
patch -p0 < tvnj.patch
cd tvnjviewer-2.8.3
./gradlew
ln -f dist/tightvnc-jviewer-2.8.3/tightvnc-jviewer.jar "$HOME"/Desktop/
echo OK
