#!/bin/bash
# make a release of a Samba library

GPG_USER='Samba Library Distribution Key <samba-bugs@samba.org>'
GPG_KEYID='13084025'

if [ ! -d ".git" ]; then
	echo "Run this script from the top-level directory in the"
	echo "repository"
	exit 1
fi

if [ $# -lt 1 ]; then
    echo "Usage: librelease.sh <LIBNAMES>"
    exit 1
fi

umask 0022

release_lib() {
    lib="$1"
    srcdir="$2"

    pushd $srcdir

    echo "Releasing library $lib"

    echo "building release tarball"
    tgzname=$(make dist 2>&1 | grep ^Created | cut -d' ' -f2)
    [ -f "$tgzname" ] || {
	echo "Failed to create tarball"
	exit 1
    }
    tarname=$(basename $tgzname .gz)
    echo "Tarball: $tarname"
    gunzip -f $tgzname || exit 1
    [ -f "$tarname" ] || {
	echo "Failed to decompress tarball $tarname"
	exit 1
    }

    tagname=$(basename $tarname .tar)
    echo "tagging as $tagname"
    git tag -u $GPG_KEYID -s "$tagname" -m "$lib: tag release $tagname" || {
	exit 1
    }

    echo "signing"
    rm -f "$tarname.asc"
    gpg -u "$GPG_USER" --detach-sign --armor $tarname || {
	exit 1
    }
    [ -f "$tarname.asc" ] || {
	echo "Failed to create signature $tarname.asc"
	exit 1
    }
    echo "compressing"
    gzip -f -9 $tarname
    [ -f "$tgzname" ] || {
	echo "Failed to compress $tgzname"
	exit 1
    }

    echo "Transferring"
    rsync -Pav $tarname.asc $tgzname master.samba.org:~ftp/pub/$lib/ || {
	exit 1
    }
    rsync master.samba.org:~ftp/pub/$lib/$tarname.*

    popd
}

for lib in $*; do
    case $lib in
	talloc | tdb | tevent)
	    release_lib $lib "lib/$lib"
	    ;;
	ldb)
	    release_lib $lib "source4/lib/$lib"
	    ;;
	*)
	    echo "Unknown library $lib"
	    exit 1
    esac
done