#!/bin/sh

set -e -u

self="$(basename "$0")"
tmpdir="$(mktemp -d -t "$self.XXXXXXXXXX")"

cleanup() {
    if [ -d "$tmpdir" ]; then
        rm -rf "$tmpdir"
    fi
}

fatal() {
    echo "$@" >&2
    exit 1
}

trap cleanup 0 1 2 3 15

if [ "$#" != 1 ] && [ "$#" != 2 ] && [ "$#" != 3 ]; then
    fatal "Usage: $0 <pathname to tarball> [<name of source package> [<version>]]"
fi

tarball=""
source=""
version=""
destdir="../tarballs"
case "$#" in
  1)
    tarball="$1"
  ;;
  2)
    tarball="$1"
    source="$2"
  ;;
  3)
    tarball="$1"
    source="$2"
    version="$3"
  ;;
  *)
    fatal "$self:$LINENO: Internal error in number of arguments."
  ;;
esac

if ! [ -r "$tarball" ]; then
    fatal "Can't open tarball at pathname: $tarball"
fi

case "$tarball" in
  *-*.tar.gz)
    if [ -z "$source" ]; then
        source="$(basename "$tarball" | sed 's/-[^-]*\.tar\.gz$//')"
    fi
    if [ -z "$version" ]; then
        version="$(basename "$tarball" | sed 's/.*-\([^-]*\)\.tar\.gz$/\1/')"
    fi
  ;;
  *)
    fatal "$self:$LINENO: Can't match tarball name."
  ;;
esac

if [ -z "$destdir" ]; then
    destdir="$(dirname "$tarball")"
fi

if ! [ -d "$destdir" ]; then
    echo "W: Creating missing destination directory $destdir" >&2
    mkdir -p "$destdir"
fi

mkdir -p "$tmpdir/$source-$version/upstream/tarballs"
cp "$tarball" "$tmpdir/$source-$version/upstream/tarballs"
tar -C "$tmpdir" -cvzf "$destdir/${source}_$version.orig.tar.gz" "$source-$version"

