#!/usr/bin/env bash
# Run from the root of the cloned repository.
# This script is used to generate a source code tarball which includes commit
# metadata so that ART can be compiled without needing to install git.
# It is meant to be used every time a release is made after creating an
# annotated tag in git.
# It is your job to checkout the tag before running this script.

./tools/generateReleaseInfo "$@"
ret=$?
if [[ $ret -ne 0 ]]; then
    printf '%s\n' "Something went wrong while running tools/generateReleaseInfo" "Aborting."
    exit 1
fi
desc="$(grep GIT_DESCRIBE ReleaseInfo.cmake)" # Gets whole string: set(GIT_DESCRIBE 5.0-gtk2-1-g96bf9129)
desc="${desc#*GIT_DESCRIBE }" # Removes front: 5.0-gtk2-1-g96bf9129)
desc="${desc%)}" # Removes back: 5.0-gtk2-1-g96bf9129

d=$(mktemp -d)
mkdir "$d/ART-${desc}" || exit 1
mv ReleaseInfo.cmake "$d/ART-${desc}"

if [ -d .git ]; then
    git archive --format=tar --prefix="ART-${desc}/" -o "ART-${desc}.tar" HEAD || exit 1
elif [ -d .hg ]; then
    hg archive -t tar --prefix="ART-${desc}/" "ART-${desc}.tar" || exit 1
else
    echo "No repo found (no .git or .hg dir), aborting."
    exit 1
fi

c=$(pwd)
(cd "$d" && tar --append --file="$c/ART-${desc}.tar" "ART-${desc}/ReleaseInfo.cmake") || exit 1
xz -z -9e "ART-${desc}.tar" || exit 1
rm -rf "$d"
