#!/bin/sh
#
# This program is a part of debnest.
#
# $Id: debnest_uupdate,v 1.2 2004/09/08 13:08:25 taru Exp $

set -e

usage() {
  echo "Usage: $0 [--upstream-version <version>] <.dsc>"
  exit 1
}

fetch_files_by_watch() {
  dsc=$1
  url=$(grep `basename $0` debian/watch  | cut -d' ' -f1)
  if test "x$url" != "x"; then
    files $dsc | while read f; do
      if ! test -e "../$f"; then
        echo "Downloading $f from $url" 1>&2
        wget -O ../$f $url/$f
      fi
    done
  fi
}

if test "x$1" = "x"; then
  usage
fi

if test "x$1" = "x--upstream-version"; then
  if test "x$3" = "x"; then
    usage
  fi
  dsc=$3
else
  dsc=$1
fi

if ! test -f "$dsc"; then
    echo "No such file or directory: $dsc"
    usage
fi

if test -f "/usr/share/debnest/modules"; then
    . /usr/share/debnest/modules
fi

if test -x "/usr/share/debnest/dsc2upstream"; then
    SCRIPTDIR=/usr/share/debnest
fi

if test -f "debian/watch"; then
  fetch_files_by_watch $dsc
fi

src=`src $dsc`
ver=`version $dsc`
verne=`version_noepoch $dsc`

tmp=`tempfile`
trap "/bin/rm -f $tmp" 0

dpkg-parsechangelog > $tmp

mysrc=$(dpkg-parsechangelog | grep Source: | cut -d' ' -f2-)
myverne=$(version_noepoch $tmp)

if ! test -f "../${mysrc}_$myverne.dsc"; then
  echo "../${mysrc}_$myverne.dsc not found" 1>&2
  exit 1
fi
diff=$(files "../${mysrc}_$myverne.dsc" | grep diff.gz || true)

for d in "../$src-$verne" "../$src-$verne.orig" "../$mysrc-$verne.orig" "../$mysrc-$verne"
do
  if test -d $d; then
    echo "$d already exist" 1>&2
    exit 1
  fi
done

cd ..
$SCRIPTDIR/dsc2upstream `basename $dsc`
mv $src-$verne.orig $mysrc-$verne.orig
if test "x$diff" != "x"; then
  /bin/cp -a $mysrc-$verne.orig $mysrc-$verne
  cd $mysrc-$verne
  zcat ../$diff | patch -p1
else
  mv $mysrc-$verne.orig $mysrc-$verne
fi
dch -v $ver-1 'New upstream release'
