#!/usr/bin/env bash
#*******************************************************************************
# Copyright (c) 2016 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     David Williams - initial API and implementation
#*******************************************************************************

GITCOMMIT=$( git rev-parse HEAD )
#GITDATE=$( git log -1 --format="%H%n%aD" --date=short )

# we go to a lot of trouble here, just to get
# short form, in prettiest way, using git commands
# as much a possible, instead of heuristic parsing.
git symbolic-ref --quiet HEAD >/dev/null
if (( $? == 0 ))
then
    GITBRANCH=$( git rev-parse --abbrev-ref HEAD )
else
    GITBRANCH='[Not on a branch]'
fi

GITTAG=$( git describe --abbrev=0 --exact-match --contains --tags $GITCOMMIT )
#echo "GITTAG: $GITTAG"
SHORT_TAG=${GITTAG##*/}
#echo "SHORT_TAG: $SHORT_TAG"

#echo "pwd: ${PWD}"
REPONAME=${PWD##*/}

case "$REPONAME" in
    eclipse.platform*)
        REPOROOT="platform";;
    eclipse.jdt*)
        REPOROOT="jdt";;
    eclipse.pde*)
        REPOROOT="pde";;
    rt.equinox*)
        REPOROOT="equinox";;
    *)
        echo "WARNING: unrecognized reponame pattern for $REPONAME";;
esac
#echo "REPOROOT: $REPOROOT"
#echo "reponame: ${REPONAME}"
#echo "git_dir: $GIT_DIR"
# git ls-remote http://www.kernel.org/pub/scm/git/git.git master pu rc
# git://git.eclipse.org/gitroot/platform/eclipse.platform.releng.aggregator.git
REMOTETAG=$( git ls-remote --tags git://git.eclipse.org/gitroot/${REPOROOT}/${REPONAME}.git $SHORT_TAG )
if [[ -z "${REMOTETAG}" ]]
then
    REMOTETAG='[No tag in remote (canonical) repository]'
else
    REMOTETAG=${REMOTETAG##*/}
fi
#echo "REMOTETAG: $REMOTETAG"
printf "  %s \t%s \t%s \t%s \t%s \n" "$REPONAME $GITCOMMIT $GITBRANCH $SHORT_TAG $REMOTETAG"
