#!/bin/bash
#
# (c) 2011 by J. Daniel Schmidt <jdsn@suse.de>
#

SVNREPO=$(echo "$1" | tr '[:upper:]' '[:lower:]' | sed -e "s/[^a-z0-9_+\.-]//g")

if [ -z "$SVNREPO" ]
then
  echo
  echo "Usage: $0 <svn-repo-name> [<user-name>]"
  echo "  svn-repo-name: The name of the svn repository."
  echo "  user-name: The user name if different from current user name."
  echo
  exit 1
fi

NNAME=${2:-$USER}
SVNADMIN=jdsn@suse.de
REALM="Authorization needed to access the ${SVNREPO} subversion repository"

if [[ $SVNREPO =~ "svn.opensuse.org" ]] ; then
  echo "Error: svn.opensuse.org is the server name."
  echo "Please use a repository name instead."
  exit 1
fi

echo
echo "Creating a password hash for user \"$NNAME\" and repo \"$SVNREPO\""

# create the hash and auth_file
TEMPFILE=`mktemp ${SVNREPO}_svn_auth.temp.XXXXX`
read -s -p "Please enter your password: " NEWPASSWD
echo
echo

case "${SVNREPO}" in
   opensuse-i18n | \
   opensuse-doc  )   (echo -n "${SVNREPO}: $NNAME:" ; echo -n $NEWPASSWD | perl -ne 'chomp; print crypt("$_", "\$1\$")."\n"') > ${TEMPFILE} ;;
   * )               (echo -n "$NNAME:$REALM:" && echo -n "$NNAME:$REALM:$NEWPASSWD" | md5sum | sed "s/ \+-$//" ) > ${TEMPFILE} ;;
esac
unset NEWPASSWD

# send auth_file to svn-admin
read -p "Do you have a local mailserver and should I send the svn_auth file to the SVN-admin? (y/N)"
if [[ $REPLY = [yY] ]]
then
  echo '' | mail -a ${TEMPFILE} -s "svn.opensuse.org auth for ${SVNREPO} for ${NNAME}" ${SVNADMIN}
  rm -v ${TEMPFILE}
else
  echo
  echo "Ok, not sending."
  echo "--> Please write an eMail to ${SVNADMIN} and attach the file ${TEMPFILE}"
fi

