#!/bin/bash

REPO_TYPE=$1
REPO_NAME=$2

function usage() {
	local BASECMD=$(basename "$0")
	echo 'usage: <REPO_TYPE> <REPO_NAME> [DESTINATION]'
	echo 'example:'
	echo -e '\t# REPO_TYPE=github'
	echo -e "\t$BASECMD github Dolibarr/dolibarr\n"
	echo -e '\t# REPO_TYPE=artcode'
	echo -e "\t$BASECMD artcode pvincent/debian-gnome\n"
	exit -1
}

function get_github() {
	local all_releases=$(git ls-remote --tags --sort="v:refname" git://github.com/$REPO_NAME)

	# extract only VERSION without 'v'
	local non_v_release=$(echo "$all_releases" |
		grep -v "refs/tags/v" | grep -v dev | grep -v rc | tail -n1 | cut -f2 | cut -d '/' -f3)
	non_v_release=${non_v_release%^\{\}} # remove extra characters ^{} from github
	[ -n "$non_v_release" ] && echo $non_v_release && return

	# extract remaining version including 'v'
	local v_release=$(echo "$all_releases" |
		grep -v dev | grep -v rc | tail -n1 | cut -f2 | cut -d '/' -f3)
	v_release=${v_release%^\{\}} # remove extra characters ^{} from github
	echo $v_release
}

function get_artcode() {
	release=$(git ls-remote --tags --sort="v:refname" \
		https://git.artcode.re/$REPO_NAME |
		tail -n1 | cut -f2 | cut -d '/' -f3)
	echo $release
}

[[ $# -ne 2 ]] && usage

if [ -z "$(command -v git)" ]; then
	echo "INSTALLING PACKAGE <GIT> required"
	sudo apt install -y git
fi

case $REPO_TYPE in
github)
	get_github
	;;
artcode)
	get_artcode
	;;
*)
	echo "repository type <${REPO_TYPE}> not yet supported!" && exit 1
	;;
esac