#!/bin/bash

LOGSPEC='%ci %an <%aE>%n%n    %s%n    [%h]%d%n'

BRANCH=$2
if [ "${BRANCH}" == "" ]; then
    BRANCH=$(git branch | grep '^\*\s*.*' | cut -d ' ' -f 2)
fi

REBUILDING=0
SHA1=$(git rev-parse HEAD)
TAG=$(git describe --tags `git rev-list --tags --max-count=1 HEAD` 2>/dev/null)
BUILD=0
CHANGELOG="$(git log --format="format:$LOGSPEC" ${BRANCH}@{0}..HEAD)"
if [ "$TAG" == "" ]; then
    BUILD=0
    REBUILDING=1
    MAJOR=$BRANCH
else
    MAJOR=$(echo $TAG | cut -d , -f 2)
    BUILD=$(echo $TAG | cut -d , -f 3)
    TAGSHA=$(git rev-list $TAG | head -n 1)
    if [ "$TAGSHA" != "$SHA1" ]; then
	CHANGELOG="$(git log --format="format:$LOGSPEC" $TAGSHA..$SHA1)"
	BUILD=$(expr $BUILD + 1)
	REBUILDING=1
    else
	SHA1=$TAGSHA
    fi
fi

OS_NAME=""
OS_VERSION=""
if [ "$OS_NAME" == "" ] && [ "$(uname)" == "Darwin" ]; then
    OS_NAME="osx"
elif [ "$OS_NAME" == "" ] && [ -f /etc/redhat-release ]; then
    OS_NAME="el"
elif [ "$OS_NAME" == "" ] && [ "$(uname | grep -i '^MINGW')" != "" ] || [ "$(uname | grep -i '^CYGWIN')" != "" ]; then
    OS_NAME="win"
fi

if [ "$OS_VERSION" == "" ] && [ "$OS_NAME" == "el" ]; then
    OS_VERSION=$(cat /etc/redhat-release | grep -o "release [0-9]" | cut -d " " -f 2)
    RHEL_VERSION=$OS_VERSION
elif [ "$OS_VERSION" == "" ] && [ "$OS_NAME" == "osx" ]; then
    OS_VERSION="$(sw_vers | grep 'ProductVersion:' | grep -o '[0-9]*\.[0-9]*\.[0-9]*')"
elif [ "$OS_VERSION" == "" ] && [ "$OS_NAME" == "win" ]; then
    echo "OS_VERSION unsupported on Microsoft Windows." >&2
fi

if [ "$ARCH" == "" ]; then
    if [ "$OS_NAME" == "osx" ]; then
	ARCH=$(uname -m)
    elif [ "$OS_NAME" != "win" ]; then
	ARCH=$(uname -i)
    elif [ "$OS_NAME" == "win" ]; then
	ARCH=$(uname -m)
    fi
fi

SOURCE=$((git remote show origin 2>/dev/null | grep "Fetch URL" | cut -d : -f 2- | cut -d ' ' -f 2-) || echo '')

echo "TAG=\"${TAG}\""
echo "BRANCH=\"${BRANCH}\""
echo "MAJOR=\"${MAJOR}\""
echo "BUILD=\"${BUILD}\""
echo "SHA1=\"${SHA1}\""
echo "OS_NAME=\"\${OS_NAME:-$OS_NAME}\""
echo "OS_VERSION=\"\${OS_VERSION:-$OS_VERSION}\""
echo "ARCH=\"\${ARCH:-$ARCH}\""
echo "VERSION=\"${MAJOR}-${BUILD}\""
echo "BUILDHOST=\"$(hostname)\""
echo "BUILDUSER=\"$(whoami)\""
echo "BUILDDIR=\"$(pwd)\""
echo "SOURCE=\"${SOURCE}\""
echo "REBUILDING=$REBUILDING"
echo "CHANGELOG=\"$CHANGELOG\""
