#!/bin/bash

AUTHOR_EMAIL="Jiangshan Yi <yijiangshan@kylinos.cn>"

function generate_changelog()
{
	IDS=`git log $1 --pretty="format: %H %s " | grep -v "Merge branch" | grep -v "KYLIN: changelog" | grep -v "KYLIN: rpmbuild" | grep -v "KYLIN: scripts" | grep -v "Linux 6.6." | awk -F' ' '{print $1}'`

	for id in $IDS
	do
		if [ x"$id" == x"$2" ]; then
			break;
		fi

		task_id=`git show --no-patch $id | grep "[Tt]ask: \?\#\?[0-9]\{4,\}\|[Bb]ug: \?\#\?[0-9]\{4,\}" | sed -e 's/ //g' | sed -e 's/#//g'`;
		if [ x"$task_id" != x"" ]; then
			task_id=" [`echo $task_id | sed 's/ /, /g'`]"
		fi

		cve_id=`git show --no-patch $id | grep "CVE: \?CVE-[0-9]\{4,\}-[0-9]\{1,\}" | sed -e 's/CVE://g'`
		if [ x"${cve_id}" != x"" ]; then
			cve_id=" {`echo ${cve_id} | sed 's/ /, /g'`}"
		fi

		git show --no-patch --pretty="$3${task_id,,}${cve_id^^}" $id >> $4
		echo "" >> $4
	done
}

VERSION=`sed -n 's/^VERSION = //p' Makefile`
PATCHLEVEL=`sed -n 's/^PATCHLEVEL = //p' Makefile`

for i in `git log  --pretty=format:"%H" --grep="KYLIN: release 6.6.0-" v6.6..`
do
	LAST_VERSION=$i
	break;
done

if [ -z $LAST_VERSION ]; then
	echo "LAST_VERSION doesn't exsit !"
	exit;
fi

SPEC="rpmbuild/SPECS/kernel.spec"
DIST_NAME=$(sed -n 's/^%define dist_name //p' ${SPEC})
REL_MAJOR=$(sed -n 's/^%define release_major //p' ${SPEC})
REL_MINOR=$(sed -n 's/^%define release_minor \.//p' ${SPEC})
KSUBLEVEL=$(sed -n 's/^%define ksublevel //p' ${SPEC})
let REL_MINOR=$((REL_MINOR))+1
sed -i "s/\%define release_minor.*/\%define release_minor \.${REL_MINOR}/" ${SPEC}

TEMPFILE="/tmp/.changelog"
DATE_=`LC_ALL=en_US.UTF-8 date -d today +'%a %b %d %Y'`
echo "* $DATE_ ${AUTHOR_EMAIL} - ${VERSION}.${PATCHLEVEL}.${KSUBLEVEL}-${REL_MAJOR}.${REL_MINOR}.${DIST_NAME}" > $TEMPFILE
generate_changelog HEAD ${LAST_VERSION} "format:- %s (%aN)" $TEMPFILE
echo "" >> $TEMPFILE
sed -i 's/KYLIN: //Ig' $TEMPFILE
sed -i 's/KYLIN://Ig' $TEMPFILE
sed -i 's/KYLIN : //Ig' $TEMPFILE
sed -i 's/KYLIN ://Ig' $TEMPFILE
sed -i "/%changelog/r $TEMPFILE" ${SPEC}


git commit -s -am  "KYLIN: release ${VERSION}.${PATCHLEVEL}.${KSUBLEVEL}-${REL_MAJOR}.${REL_MINOR}.${DIST_NAME}

Mainline: KYLIN-only
Severity: Low

Release ${VERSION}.${PATCHLEVEL}.${KSUBLEVEL}-${REL_MAJOR}.${REL_MINOR}.${DIST_NAME}

K2CI-Arch: None
"

git tag -m ${VERSION}.${PATCHLEVEL}.${KSUBLEVEL}-${REL_MAJOR}.${REL_MINOR}.${DIST_NAME} \
                ${VERSION}.${PATCHLEVEL}.${KSUBLEVEL}-${REL_MAJOR}.${REL_MINOR}.${DIST_NAME}
