#!/bin/bash

PACKAGE_NAME=4ti2

set -e
set -u

usage() {
	echo "Usage: repack --upstream-version <ver> <downloaded file>"
	exit 1
	}

if [ "$#" != "3" ]; then
	usage
fi
if [ "$1" != "--upstream-version" ]; then
	usage
fi
if [ ! -f "$3" ]; then
	if [ -n "$3" ]; then
		echo "$3 doesn't exist"
	fi
	usage
fi
UPSTREAM_VERSION="$2"
UPSTREAM_TARBALLZZ="$3"

DEBIAN_SUFFIX="+ds"
####DEBIAN_ENCAPSULATEDFOLDERNAME="${PACKAGE_NAME}-usrc"

DEBIAN_UVERSION=${UPSTREAM_VERSION}${DEBIAN_SUFFIX}
DEBIAN_ROOTFOLDERNAME="${PACKAGE_NAME}-${DEBIAN_UVERSION}.orig"
DEBIAN_TARBALLXZ="$(dirname $UPSTREAM_TARBALLZZ)/${PACKAGE_NAME}_${DEBIAN_UVERSION}.orig.tar.xz"

REPACK_TMPDIR=`mktemp -d ./repackXXXXXX`
REPACK_TMPDIR=$(readlink -f "$REPACK_TMPDIR")
trap "/bin/rm -rf \"$REPACK_TMPDIR\"" QUIT INT EXIT

message() {
	echo
	echo "-- -- $1"
	echo
	}

message "Repackaging $UPSTREAM_TARBALLZZ"

UPSTREAM_ROOTFOLDER="${REPACK_TMPDIR}/unpacked"
mkdir "${UPSTREAM_ROOTFOLDER}"
tar -C "${UPSTREAM_ROOTFOLDER}" -xf "${UPSTREAM_TARBALLZZ}" || unzip -d "${UPSTREAM_ROOTFOLDER}" "${UPSTREAM_TARBALLZZ}"
if [ `ls -1 "${UPSTREAM_ROOTFOLDER}" | wc -l` -eq 1 ]; then
	UPSTREAM_ROOTFOLDER="${UPSTREAM_ROOTFOLDER}/`ls -1 "${UPSTREAM_ROOTFOLDER}"`"
fi

DEBIAN_ROOTFOLDER="${REPACK_TMPDIR}/${DEBIAN_ROOTFOLDERNAME}"
## repack
####set -f
REPACK_WORKING_FOLDER=$(pwd)
cd "${UPSTREAM_ROOTFOLDER}"

####. "${REPACK_WORKING_FOLDER}/debian/repack.local"
## wipe out
find . -name '._*' | xargs --no-run-if-empty rm --verbose --force
rm --verbose --force -- snippet/arg-nonnull.h
rm --verbose --force -- snippet/c++defs.h
rm --verbose --force -- snippet/warn-on-use.h
rmdir --verbose --ignore-fail-on-non-empty -- snippet
rm --verbose --force -- lib/getopt1.c
rm --verbose --force -- lib/getopt.c
rm --verbose --force -- lib/getopt.in.h
rm --verbose --force -- lib/getopt_int.h
rm --verbose --force -- lib/gettext.h
rm --verbose --force -- lib/stddef.in.h
rm --verbose --force -- lib/sys_types.in.h
rm --verbose --force -- lib/unistd.c
rm --verbose --force -- lib/unistd.in.h
rm --verbose --force -- lib/Makefile.am
rmdir --verbose --ignore-fail-on-non-empty -- lib
rm --verbose --force -- m4/00gnulib.m4
rm --verbose --force -- m4/gnulib-common.m4
rm --verbose --force -- m4/gnulib-comp.m4
rm --verbose --force -- m4/gnulib-tool.m4
rm --verbose --force -- m4/extensions.m4
rm --verbose --force -- m4/extern-inline.m4
rm --verbose --force -- m4/getopt.m4
rm --verbose --force -- m4/include_next.m4
rm --verbose --force -- m4/nocrash.m4
rm --verbose --force -- m4/off_t.m4
rm --verbose --force -- m4/onceonly.m4
rm --verbose --force -- m4/ssize_t.m4
rm --verbose --force -- m4/stddef_h.m4
rm --verbose --force -- m4/sys_types_h.m4
rm --verbose --force -- m4/trapv-check.m4
rm --verbose --force -- m4/unistd_h.m4
rm --verbose --force -- m4/warn-on-use.m4
rm --verbose --force -- m4/wchar_t.m4
rm --verbose --force -- m4/lt~obsolete.m4
rm --verbose --force -- m4/ltsugar.m4
rm --verbose --force -- m4/ltoptions.m4
rm --verbose --force -- m4/ltversion.m4
rm --verbose --force -- m4/libtool.m4
rm --verbose --force -- test-driver
rm --verbose --force -- depcomp
rm --verbose --force -- compile
rm --verbose --force -- install-sh
rm --verbose --force -- ltmain.sh
rm --verbose --force -- missing
rm --verbose --force -- INSTALL
rm --verbose --force -- config.sub
rm --verbose --force -- config.guess
##
rm --verbose --force -- swig/allegrocommonlisp/4ti2.cl
rm --verbose --force -- swig/allegrocommonlisp/allegrocl-4ti2.c
rm --verbose --force -- src/groebner/script.template
rm --verbose --force -- src/4ti2/4ti2_config.h
rm --verbose --force -- src/config.h.in
rm --verbose --force -- doc/3by3magic.eps
rm --verbose --force -- doc/cubepicture.eps
rm --verbose --force -- doc/magicsqs.eps
rm --verbose --force -- doc/4ti2_manual.{aux,log,blg}
rm --verbose --force -- doc/4ti2_manual.pdf
rm --verbose --force -- doc/version.tex
find . -name 'Makefile.in' | xargs --no-run-if-empty rm --verbose --force
rm --verbose --force -- swig/aclocal.m4
rm --verbose --force -- swig/configure
rm --verbose --force -- aclocal.m4
rm --verbose --force -- configure
## discard autoconf-archive material
rm --verbose --force -- m4/ax_cc_maxopt.m4
rm --verbose --force -- m4/ax_cflags_warn_all.m4
rm --verbose --force -- m4/ax_check_compile_flag.m4
rm --verbose --force -- m4/ax_check_compiler_flags.m4
rm --verbose --force -- m4/ax_compiler_vendor.m4
rm --verbose --force -- m4/ax_cxx_maxopt.m4
rm --verbose --force -- m4/ax_gcc_archflag.m4
rm --verbose --force -- m4/ax_gcc_x86_cpuid.m4
#:

cd ${REPACK_WORKING_FOLDER}
set +f
## end
####if [ -n "${DEBIAN_ENCAPSULATEDFOLDERNAME}" ]; then
####	mkdir "${DEBIAN_ROOTFOLDER}"
####	mv "${UPSTREAM_ROOTFOLDER}" "${DEBIAN_ROOTFOLDER}/${DEBIAN_ENCAPSULATEDFOLDERNAME}"
####else
	mv "${UPSTREAM_ROOTFOLDER}" "${DEBIAN_ROOTFOLDER}"
####fi

REPACK_TARBALL="${REPACK_TMPDIR}/repacked.tar"
REPACK_TARBALLXZ="${REPACK_TARBALL}.xz"
( cd "${REPACK_TMPDIR}" && \
	find -L "${DEBIAN_ROOTFOLDERNAME}" -xdev -type f -print | sort | \
	tar -T-  --owner=root --group=root --mode=a+rX --create --file "${REPACK_TARBALL}" \
	)
xz -9e < "${REPACK_TARBALL}" > "${REPACK_TARBALLXZ}"
mv "${REPACK_TARBALLXZ}" "${DEBIAN_TARBALLXZ}"

message "Testing ${DEBIAN_TARBALLXZ}"

xz --verbose --test "${DEBIAN_TARBALLXZ}"

message "Printing information about ${DEBIAN_TARBALLXZ}"

xz --verbose --list "${DEBIAN_TARBALLXZ}"

message "Quitting"

##
## eos
