#!/bin/bash

function help() {
	echo "Tide Linux Java Utilities"
	echo
	echo "Available commands:"
	echo "- tide-java set-default <version> | Sets the default java version"
	echo "- tide-java get-default | Gets the default java version"
	echo "- tide-java list | Lists available java versions"
}

function get_installed_java_versions() {
	for dir in $(find /usr/lib/java/ -mindepth 1 -maxdepth 1 -not -name 'default'); do
		echo $(basename "$dir")
	done
}

function get_default_java_version() {
	# Return 1 if directory isn't found
	[ -d /usr/lib/java/default/bin ] || return 1
	
	local LINK_PATH=$(readlink /usr/lib/java/default)
	echo $(basename "$LINK_PATH")
}

function set_default_java_version() {
	# Return 1 if empty argument is given
	[ -z "$1" ] && return 1
	
	while read line; do
		if [[ "$1" == "$line" ]]; then
			ln -sf "$line" -T /usr/lib/java/default || return 1
			return 0
		fi
	done < <(get_installed_java_versions)
	return 1
}

case "$1" in
	"set-default")
		if [ $UID -ne 0 ]; then
			echo "Root permissions are required to set default java version"
			exit 1
		fi
		
		if set_default_java_version "$2"; then
			echo "Default java version successfully set to $2"
		else
			echo "Could not set default java version to $2"
			exit 1
		fi
		;;
	"get-default")
		echo -n "Current default java version: "
		get_default_java_version || echo "None"
		;;
	"list")
		echo "Available java versions:"
		while read line; do
			echo "- $line"
		done < <(get_installed_java_versions)
		;;
	*)
		help
		;;
esac
