#!/bin/sh -e

if [ $# -ne 1 ] ; then
  echo "Usage: `basename $0` CRAN_package_name"
  exit 1
fi

workdir=`pwd`
cranname=$1

pkgname=r-cran-`echo $cranname | tr '[A-Z]' '[a-z]'`
if echo $workdir | grep -q CRAN_prospective ; then
  targetdir=`echo $workdir | sed 's#\(CRAN_prospective\).*#\1#'`/$pkgname
else
  targetdir=`dirname $workdir`/CRAN_prospective/$pkgname
fi

if [ -d `dirname ${targetdir}`/${cranname}/debian ] ; then
  echo "Previous packaging attempt for $cranname exists in `dirname ${targetdir}`/${cranname}"
  exit 0
fi

mkdir -p $targetdir/debian
cd $targetdir

cat > debian/changelog <<EOT
$pkgname (0.0-1) UNRELEASED; urgency=medium

  * Initial release

 -- $DEBFULLNAME <${DEBEMAIL}>  `date -R`
EOT

cat > debian/watch <<EOT
version=4
https://cran.r-project.org/src/contrib/${cranname}@ANY_VERSION@@ARCHIVE_EXT@
EOT

tarball=`uscan --verbose 2>/dev/null | grep ".orig.tar.[gx]z" | sed 's#^.* \(\.\./.*\.orig\.tar\.[gx]z\).*#\1#'`

if [ "$tarball" = "" ] ; then
  # if nothing was found on CRAN try BioConductor
  sed -i 's/^r-cran-/r-bioc-/' debian/changelog
  cat > debian/watch <<EOT
version=4
opts=downloadurlmangle=s?^(.*)\.\.?http:\$1packages/release/bioc? \
 https://www.bioconductor.org/packages/release/bioc/html/${cranname}.html .*/${cranname}@ANY_VERSION@@ARCHIVE_EXT@
EOT
  tarball=`uscan --verbose 2>/dev/null | grep ".orig.tar.[gx]z" | sed 's#^.* \(\.\./.*\.orig\.tar\.[gx]z\).*#\1#'`
  if [ "$tarball" = "" ] ; then
    echo "$cranname was neither found on CRAN nor BioConductor"
    exit 1
  fi
  pkgname=r-bioc-`echo $cranname | tr '[A-Z]' '[a-z]'`
fi

cd ..
rm -rf r-cran-`echo $cranname | tr '[A-Z]' '[a-z]'`
tarball=`echo $tarball | sed 's#^\.\./##'`
tar xaf $tarball
cd $cranname
if [ `find . -iname "test*" | wc -l` -gt 0 ] ; then
  dh-make-R --test run-unit-test 2>/dev/null >/dev/null
else
  dh-make-R 2>/dev/null >/dev/null
fi

# Hack to get cme formatted d/control
sed -i 's/^Standards-Version: .*/Standards-Version: 4.0.0/' debian/control
cme fix dpkg-control 2>/dev/null >/dev/null || true

echo "You can find a packaging attempt for $cranname in `pwd`"
