#!/bin/sh

PATCH=$1
test -f "$PATCH" || (echo "$PATCH not found"; exit 1)

#ncurses-5.7-20091003.patch
FILENAME=`basename "$PATCH"`
#DATE=`echo $FILENAME | sed -re 's/ncurses-5.7-(....)(..)(..).patch/\1-\2-\3/'`

AUTHOR=`grep '# patch by' "$PATCH" | sed -e 's/# patch by //'`
DATE=`grep '# created' "$PATCH" | sed -e 's/# created  //'`
TITLE=`head -n1 "$PATCH" | sed -re 's/# (.* - .*) - .*/\1/'`
PATCHDATE=`echo $TITLE | sed -e 's/.* - patch //'`

GIT_AUTHOR_NAME=`echo $AUTHOR | sed -re 's/(.*) <.*/\1/'`
GIT_AUTHOR_EMAIL=`echo $AUTHOR | sed -re 's/.*<(.*)>/\1/'`
GIT_AUTHOR_DATE=`date -d"$DATE" +%s`

DEBUG=
if [ -n "$DEBUG" ]; then
    echo $FILENAME
    echo $AUTHOR
    echo $DATE
    echo $TITLE
    echo $PATCHDATE
    echo
    echo $COMMIT_MSG
    echo
    echo $GIT_AUTHOR_DATE
    echo $GIT_AUTHOR_NAME
    echo $GIT_AUTHOR_EMAIL
fi

git apply $PATCH
COMMIT_MSG=`git diff NEWS    |\
            grep ^\+         |\
            grep -v ^+++     |\
            grep -v \$Id:    |\
            grep -v ^\+$PATCHDATE |\
            sed -e 's/^\+//'  |\
            sed -e 's/^\t//'`

git add -u
git add .
GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
export GIT_AUTHOR_DATE
export GIT_AUTHOR_NAME
export GIT_AUTHOR_EMAIL
export GIT_COMMITTER_DATE
export GIT_COMMITTER_NAME
export GIT_COMMITTER_EMAIL
git commit -m "$TITLE

$COMMIT_MSG"
