#!/bin/bash

# src/include/pbs_version.h is _authoritative_
# README.torque and torque.spec are updated in the tarball
# if --rel, pbs_version is incremented in the source

usage="Usage: $0 [--rel|--snap]"

if [ -z "$1" ];then
  echo "$usage" 1>&2
  exit 1
fi

case $1 in
  --rel) release=1;;
  --snap) release=0;;
  *) echo "$usage" 1>&2; exit 1;;
esac

if [ ! -f ./src/include/pbs_version.h ];then
  echo "Not in source directory" 1>&2
  exit 1
fi


timestamp=$(date +%Y%m%d%H%M)
reldate=$(date "+%b, %d %Y")
version=$(set -- $(cat ./src/include/pbs_version.h);echo $3 | xargs echo | sed 's/-snap.*//')


# figure out this release name (and the next)
if [ $release = 1 ];then
  fullversion=$version
  nextversion=$(perl -e '$_=shift; /(\d+\.\d+\.\d+p)(\d+)/; $b=$2; $b++; print "$1$b\n"' $version)
else
  fullversion=$version-snap.$timestamp
fi
relname=torque-$fullversion

# update a few files in the source dir
perl -pi -e 's/^\%define version .*/\%define version '"$version"/ torque.spec
perl -pi -e 's/^#?\%?\%define snap .*/\%define snap '"$timestamp"/ torque.spec
echo "#define PBS_VERSION \"$fullversion\"" > src/include/pbs_version.h

# make our release directory
mkdir $relname
find . -path '*/CVS' -prune -o -path ./$relname -prune -o \! -name .\* -a -type f -a -print | tar cf - -T - | tar xf - -C $relname

# update a few files
perl -pi -e 's/^\%setup.*/%setup -n %{name}-%{version}%{?snap:-snap.%snap}/' $relname/torque.spec

if [ $release = 1 ];then
  perl -pi -e 's/^#?\%?\%define snap .*/#\%\%define snap '$timestamp/ $relname/torque.spec
  perl -pi -e 's/TORQUE .* README .*/TORQUE '"$version"' README (released '"$reldate"')/' $relname/README.torque
  perl -pi -e 's/TORQUE .* README .*/TORQUE '"$nextversion"' README (snapshot)/' README.torque
  echo '#define PBS_VERSION "'$nextversion'"' > ./src/include/pbs_version.h
fi

# tar up the whole mess and cleanup
tar cf - $relname | gzip > /tmp/$relname.tar.gz
rm -rf $relname

echo /tmp/$relname.tar.gz
