#!/bin/bash

OPENJDK_VERSION=${OPENJDK_VERSION:-"18.0.1_10"}
MAVEN_VERSION=${MAVEN_VERSION:-3.8.6}

PROGNAME="${BASH_SOURCE[0]}"
HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)"
READIES=$(cd $HERE/.. && pwd)
. $READIES/shibumi/defs

if [[ $1 == --help || $1 == help || $HELP == 1 ]]; then
	cat <<-'END'
		Install OpenJDK

		[ARGVARS...] getjava [--help|help]

		Argument variables:
		JDK=1     Install JDK and Maven (otherwise, install JRE)
		FORCE=1   Remove existing version

		NOP=1           Do not execute, just print commands
		V|VERBOSE=1     Print commands
		HELP=1          Print help

	END
	exit 0
fi

OS=`uname -s`
if [[ $OS == Linux ]]; then
	OS=linux
elif [[ $OS == Darwin ]]; then
	OS=mac
else
	echo "$OS: unsupported"
fi

ARCH=`uname -m`
if [[ $ARCH == x86_64 ]]; then
	ARCH=x64
elif [[ $ARCH == i686 ]]; then
	ARCH=x86-32
elif [[ $ARCH == aarch64 ]]; then
	ARCH=aarch64
else
	echo "$ARCH: unsupported"
	exit 1
fi

VER_URL_DIR="${OPENJDK_VERSION/_/%2B}"
if [[ $JDK == 1 ]]; then
	TYPE=jdk
else
	TYPE=jre
fi
OPENJDK_NAME=jdk-${OPENJDK_VERSION/_/+}
[[ $JDK != 1 ]] && OPENJDK_NAME+="-jre"
OPENJDK_DIR=/opt/$OPENJDK_NAME

MAVEN_NAME=apache-maven-${MAVEN_VERSION}
MAVEN_DIR=/opt/$MAVEN_NAME

tmpdir=$(mktemp -d /tmp/openjdk.XXXXXX)

install_openjdk=1
if [[ -d $OPENJDK_DIR ]]; then
	if [[ $FORCE == 1 || ! -f $OPENJDK_DIR/bin/java ]]; then
		$SUDO rm -rf $OPENJDK_DIR
	else
		echo "$OPENJDK_DIR is in place"
		install_openjdk=0
	fi
fi
if [[ $install_openjdk == 1 ]]; then
	runn wget -q -O $tmpdir/openjdk.tgz https://github.com/adoptium/temurin18-binaries/releases/download/jdk-${VER_URL_DIR}/OpenJDK18U-${TYPE}_${ARCH}_${OS}_hotspot_${OPENJDK_VERSION}.tar.gz

	cd $tmpdir
	tar xzf openjdk.tgz
	$OP $SUDO mv $OPENJDK_NAME $OPENJDK_DIR
fi

install_maven=0
if [[ $JDK == 1 ]]; then
	install_maven=1
	if [[ -d $MAVEN_DIR ]]; then
		if [[ $FORCE == 1 || ! -f $MAVEN_DIR/bin/mvn ]]; then
			$SUDO rm -rf $MAVEN_DIR
		else
			echo "$MAVEN_DIR is in place"
			install_maven=0
		fi
	fi
fi
if [[ $install_maven == 1 ]]; then
	runn wget -q -O $tmpdir/maven.tgz https://dlcdn.apache.org/maven/maven-$(echo "$MAVEN_VERSION" | cut -f1 -d.)/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz
	cd $tmpdir
	tar xzf maven.tgz
	$OP $SUDO mv $MAVEN_NAME $MAVEN_DIR
fi

tmp_profiled=$(mktemp -d)
if [[ $JDK == 1 ]]; then
	EXTPATH="$OPENJDK_DIR/bin:$MAVEN_DIR/bin"
else
	EXTPATH="$OPENJDK_DIR/bin"
fi
cat <<-END >> $tmp_profiled/openjdk.sh
	export PATH="$EXTPATH:$PATH"
	export JAVA_HOME="$OPENJDK_DIR"
	END
add_to_profile_d $tmp_profiled/openjdk.sh
rm -rf $tmp_profiled

cd $HERE
rm -rf $tmpdir
