rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=d232d1513be3e651e2b014b132a44ac8b59a2c5f
commit d232d1513be3e651e2b014b132a44ac8b59a2c5f Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Tue Feb 28 08:42:22 2017 +0200 eflete: add script for prepare release This script will check the build and UTC result, update NEWS and version in configure.ac, next will create tarballs and md5 for tarballs. --- release_prepare.sh | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) diff --git a/release_prepare.sh b/release_prepare.sh new file mode 100755 index 0000000..1041abb --- /dev/null +++ b/release_prepare.sh @@ -0,0 +1,189 @@ +#!/bin/bash + +NEWS_FILE=NEWS.new +CONFIGURE=configure.ac + +function line_print { + eval "printf '%.0s$2' {1..$1}" +} + +function list_print { + oldIFS="$IFS" + IFS=$'\n' + for string in $1 + do + echo -e "$2$string" + done + IFS="$oldIFS" +} + +function update_news { + echo -e ">>> Update NEWS file" + #exec 3>&1 4>&2 + #exec 1>$NEWS_FILE 2>&1 + + #get the last release version + tmp=(`sed -n 2p NEWS`) + last_version=${tmp[1]} + + #make header + title="Eflete $1" + tlen=${#title} + line=$(line_print $tlen '=') + header="$line\n$title\n$line" + echo -e $header > $NEWS_FILE + echo -e "" >> $NEWS_FILE + since="Changes since $last_version" + echo -e $since >> $NEWS_FILE + echo -e "$(line_print ${#since} '-')" >> $NEWS_FILE + + #get the features list + features=`git log --since="$last_version" --grep="@feature" --format=%s` + if [ -n "$features" ]; then + echo -e "" >> $NEWS_FILE + echo -e "Features:" >> $NEWS_FILE + list_print "$features" " * " >> $NEWS_FILE + fi + + #get the fixes list + fixes=`git log --since="$last_version" --grep="@fix" --format=%s` + if [ -n "$fixes" ]; then + echo -e "" >> $NEWS_FILE + echo -e "Fixes:" >> $NEWS_FILE + list_print "$fixes" " * " >> $NEWS_FILE + fi + + #print to user latest changes + cat $NEWS_FILE + #get the previos change history and to result file + echo -e "" >> $NEWS_FILE + sed -n '5,$p' NEWS >> $NEWS_FILE + + #trap 'exec 2>&4 1>&3' 0 1 2 3 + + echo -e "" + read -p "Do you want to edit NEWS? [Y/n] " choice + case "$choice" in + y|Y ) vim $NEWS_FILE ;; + * ) ;; + esac + + mv $NEWS_FILE NEWS + + read -p "Do you want to commit the updated NEWS? [Y/n] " choice + case "$choice" in + y|Y ) commit_NEWS $1 ;; + * ) ;; + esac +} + +function commit_NEWS { + git add NEWS + git commit -m "Update NEWS for version $1" + echo -e "" + git log -1 +} + +function commit_VERSION { + git add $CONFIGURE + git commit -m "Update configure for version $1" + echo -e "" + git log -1 +} + +function spinner { + PID="$1" + i=1 + sp_chars="-\|/" + echo -n " " + while [ -d /proc/$PID ]; do + printf "\b${sp:i++%${#sp}:1}" + done +} + +function check_build { + git clean -dxf > /tmp/git_clean.log + ./autogen.sh + make + if [ $? -ne 0 ]; then + echo -e "" + echo -e "ERROR: Build is failsed." + exit 1; + fi + + echo -e ">>> Build success" +} + +function check_UTC { + make check + if [ $? -ne 0 ]; then + echo -e "" + echo -e "ERROR: Build is failsed." + exit 1; + fi + + echo -e ">>> UTC success" +} + +function update_version { + echo -e "" + echo -e ">>> Update version in configure file" + oldIFS="$IFS" + IFS='.' + array=( $1 ) + major="${array[0]}" + minor="${array[1]}" + micra="${array[*]:2}" + IFS="$oldIFS" + + sed "1s/.*/EFLETE_VERSION([$major], [$minor], [$micra], [release])/g" $CONFIGURE > "$CONFIGURE.new" + mv "$CONFIGURE.new" $CONFIGURE + + echo -e "" + head $CONFIGURE + echo -e "" + read -p "Do you want to edit $CONFIGURE? [Y/n] " choice + case "$choice" in + y|Y ) vim $CONFIGURE ;; + * ) ;; + esac + + read -p "Do you want to commit the updated version? [Y/n] " choice + case "$choice" in + y|Y ) commit_VERSION $1 ;; + * ) ;; + esac +} + +function create_tag { + git tag -a "$1" -m "v$1" +} + +function create_tarballs { + read -p "Type the path to save tarballs: " path + if [ -z $path ]; then + path=$PWD"/eflete-tarballs.$1" + fi + mkdir -p $path + echo -e $path + make dist + mv eflete-$1* $path + cd $path + md5sum * > "eflete-$1.md5sum" +} + +#START HERE +if [ -z $1 ]; then + echo -e "ERROR: wrong version" + echo -e "Please set the release version" + echo -e "" + echo -e "Usage: $0 VERSION" + exit 1 +fi + +update_news $1 +update_version $1 +create_tag +check_build +check_UTC +create_tarballs $1 --