#!/bin/bash
#
# Copyright 2005 Timo Hirvonen <tihirvon@ee.oulu.fi>
#
# This file is licensed under the GPLv2.

source $(dirname $0)/utils.sh || exit 1

usage()
{
	echo "Usage: ${PROGRAM_NAME} SRCDIR PACKAGE VERSION"
	echo "Make ${DISTDIR}/PACKAGE-VERSION.tar.bz2"
	echo
	echo "  --help  show this help and exit"
	echo
	echo "Output directory can be changed by setting the DISTDIR environment variable."
	echo "Files excluded from dist should be defined in SRCDIR/.dist-exclude."
}

main()
{
	local tmpdir link file srcdir package version cmd_prefix

	if [[ -z ${DISTDIR} ]]
	then
		DISTDIR=${HOME}
		pwarn "DISTDIR not set. Using ${DISTDIR}.\n"
	else
		if [[ ${DISTDIR:0:1} != '/' ]]
		then
			DISTDIR="${PWD}/${DISTDIR}"
		fi
	fi

	while [[ $# -gt 0 ]]
	do
		case $1 in
			--h|--he|--hel|--help)
				usage
				exit 0
				;;
			--)
				shift
				break
				;;
			-*)
				pdie "unrecognized option: \`$1'"
				;;
			*)
				break
				;;
		esac
		shift
	done

	if [[ $# -ne 3 ]]
	then
		usage
		exit 1
	fi
	srcdir=$1
	package=$2
	version=$3

	tmpdir=/tmp/dist-$UID
	link=${package}-${version}
	file=${DISTDIR}/${package}-${version}.tar.bz2
	dist_exclude=${srcdir}/.dist-exclude

# 	echo ${srcdir}
# 	echo ${file}
# 	exit 0

	if [[ ! -f ${dist_exclude} ]]
	then
		pwarn "Creating ${dist_exclude}"
		cat > "$dist_exclude" <<EOF
.*.*
.nfs*
*.bak
*.lo
*.o
*.orig
*.pc
*.rej
*~
CVS
MT
Makefile
core
core.[0-9]*
tags
EOF
	fi

	cmd_prefix=""
	[[ $BUILD_VERBOSITY -ge 2 ]] && cmd_prefix="run_verbose"

	$cmd_prefix mkdir $tmpdir || exit 1
	$cmd_prefix trap "rm -f ${link}; rmdir ${tmpdir}" 0 1 2 3 13 15
	$cmd_prefix cd $tmpdir || exit 1

	if [[ -e ${file} ]]
	then
		echo -n "\`${file}' already exists. overwrite? [n] "
		read key
		case $key in
			y|Y)
				;;
			*)
				exit 0
				;;
		esac
	fi

	$cmd_prefix ln -s ${srcdir} ${link} || exit 1
	[[ $BUILD_VERBOSITY -eq 1 ]] && echo "   DIST   ${file}"
	$cmd_prefix tar --exclude-from ${dist_exclude} --exclude ${link}/config.mk \
		--exclude ${link}/config.h --exclude ${link}/install.log \
		-jchf ${file} ${link}
	return $?
}

main "$@"
