#! /bin/sh

# This script takes the compiled tarball, makes an RPM package and
# a patch against the latest released version, then uploads
# everything over ssh and removes old snapshots.
# Run this script in the directory where mc was built.

# TODO:
#  build tarball, select level of testing
#  (dist, distcheck, warning checks)


# $1 - file to upload, $2 - shell mask to erase
function upload() {
  echo "Uploading $1 to $SITE"
  name="`basename $1`"
  scp "$1" "$SITE:$DIR/.in.$name"
  ssh $SITE "rm -f $DIR/$2; mv $DIR/.in.$name $DIR/$name"
}

set -e

# Version to make patches against.
# Make sure to have it unpacked in /usr/src
BASE_VERSION="4.6.0-pre1"

# Local directories
MC_BASE_DIR="/usr/src/mc-$BASE_VERSION"
MC_CVS_DIR="/usr/src/mc"
MC_BUILD_DIR="/usr/src/mc.snap"
RPM_SRC_DIR="/usr/src/redhat"

# Location of the snapshot directory
SITE="login.ibiblio.org"
DIR="/public/ftp/pub/Linux/utils/file/managers/mc/snapshots"

cd "$MC_CVS_DIR"
cvs up -dPA
rm -rf "$MC_BUILD_DIR"
cp -a "$MC_CVS_DIR" "$MC_BUILD_DIR"
cd "$MC_BUILD_DIR"

# Sanity check
if ! test -f ./autogen.sh || ! test -f src/screen.c; then
  echo "Not in the MC CVS working directory"
  exit 1
fi

# Remove old tarballs and build the new one
rm -f "mc*.tar.gz"
MCVERSION=`date "+%Y-%m-%d-%H" --utc`
cp -f configure.in configure.in.cvs
sed "s/AM_INIT_AUTOMAKE([^)]*)/AM_INIT_AUTOMAKE(mc, $MCVERSION)/" \
  configure.in.cvs >configure.in
./autogen.sh
make all
make distcheck

# Make sure that the new tarball exists
MCTARBALL="mc-$MCVERSION.tar.gz"
if test ! -f "$MCTARBALL"; then
  echo "No tarball found!!!"
  exit 1
fi

# Make an RPM package
rm -f $RPM_SRC_DIR/RPMS/i386/mc-*.i386.rpm
rm -rf $RPM_SRC_DIR/BUILD/mc-*/
rpmbuild -tb "$MCTARBALL"
MC_RPM=`echo $RPM_SRC_DIR/RPMS/i386/mc-*.i386.rpm`
if test ! -f $MC_RPM; then
  echo "Failed to compile package!!!"
  exit 1
fi

# Make a patch against the latest released version
MC_PATCH="mc-$BASE_VERSION-$MCVERSION.diff"
MC_PATCH_BZ2="$MC_PATCH.bz2"
if test ! -d $MC_BASE_DIR; then
  echo "Cannot find unpacked base version!!!"
  exit 1
fi
rm -f $MC_PATCH $MC_PATCH_BZ2

# Don't merge PO-files, we are skipping them in the patch
make distdir MSGMERGE=false

# Sometimes GNU diff returns 1 for unclear reasons
diff -urN -x po $MC_BASE_DIR mc-*/ >$MC_PATCH || :
bzip2 $MC_PATCH

upload "$MCTARBALL" "mc*.tar.gz"
upload "$MC_RPM" "mc*.i386.rpm"
upload "$MC_PATCH_BZ2" "mc*.diff.bz2"

echo "Done"
