Blob Blame History Raw
#!/bin/bash

#############################################################################
# Copyright (c) 2008,2009 Novell, Inc.
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail,
# you may find current contact information at www.novell.com
#############################################################################

unset FILE
export EDITOR=${EDITOR:=vim}

[ -z "$GIT_COMMITTER_EMAIL" ] && GIT_COMMITTER_EMAIL=$(git config  --get user.email)

if [ -n "$1" ]; then
    if [ -f "$1" ]; then
        FILE=$1
    else
        if [ -d "$1" ]; then
            cd $1
        else
            FILE=${1##*/}.changes
        fi
    fi
fi

if [ -z "$FILE" ]; then
    echo "Usage: ${0##*/} [filename[.changes]|path [file_with_comment]]"
    echo "       If no <filename> is given, exactly one *.changes or"
    echo "       *.spec file has to be in the cwd or in <path>."
    echo
    exit 1
fi

COMMENT_FILE=$2

tmpfile=$(mktemp /tmp/${0##*/}.XXXXXX)
trap "rm -f $lockfile $tmpfile" EXIT

{
    timestamp=$(LC_ALL=POSIX TZ=Europe/Berlin date)
    committer=${SUSE_COMMITTER_EMAIL:-${GIT_COMMITTER_EMAIL:-$(id -un)@suse.de}}
    echo "-------------------------------------------------------------------"
    echo "$timestamp - $committer"
    echo
    if  [ -n "$CHANGE_MESSAGE" ]; then
        echo "- $CHANGE_MESSAGE"
    elif [ -z "$COMMENT_FILE" ]; then
        echo "- "
    else        
        cat $COMMENT_FILE
    fi
    echo
    if [ -f "$FILE" ]; then
        cat $FILE
    fi
} >> $tmpfile || exit 1

if [ -z "$COMMENT_FILE" ]; then
    lines=1
    CHKSUM_BEFORE=$(md5sum $tmpfile | awk '{print $1}')
else
    lines=$(wc -l $COMMENT_FILE | awk '{print $1}')
    CHKSUM_BEFORE=has_changed
fi

if test -z "$CHANGE_MESSAGE"; then
    $EDITOR +$((3+lines)) $tmpfile

    if [ "$CHKSUM_BEFORE" = "$(md5sum $tmpfile | awk '{print $1}')" ]; then
        exit 1
    fi
fi
cat $tmpfile > $FILE