#!/bin/sh

# Script to describe a GCC revision based on git hash

short=no
long=no
c=master

for arg in "$@"
do
    case "$arg" in
      --short) short=yes long=no
	;;
      --long|--full) long=yes short=no
	;;
      *) c=$arg
    esac
done

if test x$short = xyes; then
    r=$(git describe --all --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-\([0-9][0-9]*\)-\([0-9][0-9]*\)-g[0-9a-f]*$,r\1-\2,p;s,^basepoints/gcc-\([0-9][0-9]*\)$,r\1-0,p');
elif test x$long = xyes; then
    r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-,r,p')
else
    r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-,r,p')
    expr ${r:-no} : 'r[0-9]\+$' >/dev/null && r=${r}-0-g$(git rev-parse $c);
fi;
if test -n $r; then
    o=$(git config --get gcc-config.upstream);
    rr=$(echo $r | sed -n 's,^r\([0-9]\+\)-[0-9]\+\(-g[0-9a-f]\+\)\?$,\1,p');
    if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then
	m=releases/gcc-$rr;
    else
	m=master;
    fi;
    git merge-base --is-ancestor $c ${o:-origin}/$m && echo ${r};
fi;
