Matthias Brugger c8a553
#!/bin/bash
Michal Marek 9bee79
Michal Marek 0a417c
#############################################################################
Michal Marek 0a417c
# Copyright (c) 2008,2009 Novell, Inc.
Michal Marek 0a417c
# All Rights Reserved.
Michal Marek 0a417c
#
Michal Marek 0a417c
# This program is free software; you can redistribute it and/or
Michal Marek 0a417c
# modify it under the terms of version 2 of the GNU General Public License as
Michal Marek 0a417c
# published by the Free Software Foundation.
Michal Marek 0a417c
#
Michal Marek 0a417c
# This program is distributed in the hope that it will be useful,
Michal Marek 0a417c
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Michal Marek 0a417c
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the
Michal Marek 0a417c
# GNU General Public License for more details.
Michal Marek 0a417c
#
Michal Marek 0a417c
# You should have received a copy of the GNU General Public License
Michal Marek 0a417c
# along with this program; if not, contact Novell, Inc.
Michal Marek 0a417c
#
Michal Marek 0a417c
# To contact Novell about this file by physical or electronic mail,
Michal Marek 0a417c
# you may find current contact information at www.novell.com
Michal Marek 0a417c
#############################################################################
Michal Marek 0a417c
Michal Marek 9bee79
unset FILE
Michal Marek 9bee79
export EDITOR=${EDITOR:=vim}
Michal Marek 9bee79
Michal Marek 9bee79
[ -z "$GIT_COMMITTER_EMAIL" ] && GIT_COMMITTER_EMAIL=$(git config  --get user.email)
Michal Marek 9bee79
Michal Marek 9bee79
if [ -n "$1" ]; then
Michal Marek 9bee79
    if [ -f "$1" ]; then
Michal Marek 9bee79
        FILE=$1
Michal Marek 9bee79
    else
Michal Marek 9bee79
        if [ -d "$1" ]; then
Michal Marek 9bee79
            cd $1
Michal Marek 9bee79
        else
Michal Marek 9bee79
            FILE=${1##*/}.changes
Michal Marek 9bee79
        fi
Michal Marek 9bee79
    fi
Michal Marek 9bee79
fi
Michal Marek 9bee79
Michal Marek 9bee79
if [ -z "$FILE" ]; then
Michal Marek 9bee79
    echo "Usage: ${0##*/} [filename[.changes]|path [file_with_comment]]"
Michal Marek 9bee79
    echo "       If no <filename> is given, exactly one *.changes or"
Michal Marek 9bee79
    echo "       *.spec file has to be in the cwd or in <path>."
Michal Marek 9bee79
    echo
Michal Marek 9bee79
    exit 1
Michal Marek 9bee79
fi
Michal Marek 9bee79
Michal Marek 9bee79
COMMENT_FILE=$2
Michal Marek 9bee79
Michal Marek 9bee79
tmpfile=$(mktemp /tmp/${0##*/}.XXXXXX)
Michal Marek 9bee79
trap "rm -f $lockfile $tmpfile" EXIT
Michal Marek 9bee79
Michal Marek 9bee79
{
Michal Marek 9bee79
    timestamp=$(LC_ALL=POSIX TZ=Europe/Berlin date)
Michal Marek 9bee79
    committer=${SUSE_COMMITTER_EMAIL:-${GIT_COMMITTER_EMAIL:-$(id -un)@suse.de}}
Michal Marek 9bee79
    echo "-------------------------------------------------------------------"
Michal Marek 9bee79
    echo "$timestamp - $committer"
Michal Marek 9bee79
    echo
Michal Marek 9bee79
    if  [ -n "$CHANGE_MESSAGE" ]; then
Michal Marek 9bee79
        echo "- $CHANGE_MESSAGE"
Michal Marek 9bee79
    elif [ -z "$COMMENT_FILE" ]; then
Michal Marek 9bee79
        echo "- "
Michal Marek 9bee79
    else        
Michal Marek 9bee79
        cat $COMMENT_FILE
Michal Marek 9bee79
    fi
Michal Marek 9bee79
    echo
Michal Marek 9bee79
    if [ -f "$FILE" ]; then
Michal Marek 9bee79
        cat $FILE
Michal Marek 9bee79
    fi
Michal Marek 9bee79
} >> $tmpfile || exit 1
Michal Marek 9bee79
Michal Marek 9bee79
if [ -z "$COMMENT_FILE" ]; then
Michal Marek 9bee79
    lines=1
Michal Marek 9bee79
    CHKSUM_BEFORE=$(md5sum $tmpfile | awk '{print $1}')
Michal Marek 9bee79
else
Michal Marek 9bee79
    lines=$(wc -l $COMMENT_FILE | awk '{print $1}')
Michal Marek 9bee79
    CHKSUM_BEFORE=has_changed
Michal Marek 9bee79
fi
Michal Marek 9bee79
Michal Marek 9bee79
if test -z "$CHANGE_MESSAGE"; then
Michal Marek 9bee79
    $EDITOR +$((3+lines)) $tmpfile
Michal Marek 9bee79
Michal Marek 9bee79
    if [ "$CHKSUM_BEFORE" = "$(md5sum $tmpfile | awk '{print $1}')" ]; then
Michal Marek 9bee79
        exit 1
Michal Marek 9bee79
    fi
Michal Marek 9bee79
fi
Michal Marek 9bee79
cat $tmpfile > $FILE