#!/bin/bash
# mk-git-tar
# Generic tool for making tarballs from git tags
# Run this script in SOURCES
# $ ./mk-git-tar <projectname> <url> <tar_compression> [HEAD]
# Example :-
# $ ./mk-git-tar ZoneMinder https://github.com/ZoneMinder/ZoneMinder.git tar.gz
params=( "$@" )
(( ${#params[@]} < 3 )) &&  { echo "Usage: $ ./mk-git-tar <projectname> <url> <tar_compression> [HEAD]"; exit 0; }

name=$1
url=$2
tartype=$3
hopt=$4

tartype() {
case $tartype in
tar.gz)
opt=z
;;
tar.bz2)
opt=j
;;
tar.xz)
opt=J
;;
tar)
opt=
;;
*)
echo "Unsupported compression type"
exit 1
esac
}

[[ -d $name ]] && rm -rf $name
git clone $url $name

tartype

cd ${name}
if [[ -z  $hopt ]]; then
tag_lst=($(git tag -l))
echo -e "Version tags available:- ${tag_lst[@]}\n"
read -p "Enter the exact tag string you wish to select (e.g. v3.5.1 ) " ver_tag
read -p "Enter the filename version suffix to use (e.g. 3.5.1 ) " ver
git checkout ${ver_tag}
git archive --format=$tartype --prefix=${name}-${ver}/ ${ver_tag} > ../${name}-${ver}.$tartype
else
read -p "Enter the filename version suffix to use (e.g. 3.5.1 ) " ver
git archive $hopt --format=$tartype --prefix=${name}-${ver}/ > ../${name}-${ver}.$tartype
fi
cd ..
[[ $? = 0 ]] && { chmod 644 ${name}-${ver}.$tartype; echo "Written file: ${name}-${ver}.$tartype"; rm -rf ${name}; }

 
