#!/bin/bash

REPO_TYPE=$1
REPO_NAME=$2

function usage {
  local basecmd
  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 libre/libre-gnome\n"
  exit 1
}

function get_github {
  local all_releases=$(git ls-remote --tags --sort="v:refname" https://github.com/"$REPO_NAME" | grep -Eo "v?([0-9]+\.){2}[0-9]+$")

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

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

  # compare which newer from non_v_release to v_release
  if [ -n "$non_v_release" ] && [ "v$non_v_release" \> "$v_release" ]; then
    echo $non_v_release
  else
    echo $v_release
  fi
}

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

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

if [ -z "$(command -v git)" ]; then
  echo "INSTALLING PACKAGE <GIT> required"
  source "$MIAOU_BASH_DIR/lib/functions.bash"
  "$MIAOU_BASH_DIR/tools/idem_apt_install" git
fi

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