From: Artem Bityutskiy Date: Wed, 18 Sep 2013 12:29:11 +0000 (+0300) Subject: make_a_release.sh: various improvements X-Git-Tag: v3.0~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=94926fe17c68fa783e2f25e9afad803a41a29d42;p=tools%2Fbmap-tools.git make_a_release.sh: various improvements This patch makes several improvements in the make_a_release.sh. * Ask the maintainer tough questions about whether the docs were updated * Automatically update the RPM and Debian changelog files * Automatically increase version number in various places Change-Id: I17a20132c79ac0d07cdb5addddb2e9da071bb281 Signed-off-by: Artem Bityutskiy --- diff --git a/TODO b/TODO index f66740d..145e305 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,3 @@ Current TODO list, any help with these is appreciated. -1. Teach the 'make_a_release.sh' script to update the version and the - changelog. -2. Teach bmaptool to update the alternate GPT partition +1. Teach bmaptool to update the alternate GPT partition diff --git a/make_a_release.sh b/make_a_release.sh index 1cdac49..d4f9a0d 100755 --- a/make_a_release.sh +++ b/make_a_release.sh @@ -26,6 +26,8 @@ # * update the version field in all places, the rpm/deb changelog and commit # that. +PROG="make_a_release.sh" + fatal() { printf "Error: %s\n" "$1" >&2 exit 1 @@ -40,6 +42,37 @@ EOF exit 0 } +ask_question() { + local question=$1 + + while true; do + printf "%s\n" "$question (yes/no)?" + IFS= read answer + if [ "$answer" == "yes" ]; then + printf "%s\n" "Very good!" + return + elif [ "$answer" == "no" ]; then + printf "%s\n" "Please, do that!" + exit 1 + else + printf "%s\n" "Please, answer \"yes\" or \"no\"" + fi + done +} + +format_changelog() { + local logfile="$1"; shift + local pfx1="$1"; shift + local pfx2="$1"; shift + local pfx_len="$(printf "%s" "$pfx1" | wc -c)" + local width="$((80-$pfx_len))" + + while IFS= read -r line; do + printf "%s\n" "$line" | fold -c -s -w "$width" | \ + sed -e "1 s/^/$pfx1/" | sed -e "1! s/^/$pfx2/" + done < "$logfile" +} + [ $# -eq 0 ] && usage [ $# -eq 1 ] || fatal "insufficient or too many argumetns" @@ -58,32 +91,77 @@ if [ "$current_branch" != "$release_branch" ]; then fatal "current branch is '$current_branch' but must be '$release_branch'" fi +# Remind the maintainer about various important things +ask_question "Did you update the docs/RELEASE_NOTES file" +ask_question "Did you update the docs/README file" +ask_question "Did you update the man page" +ask_question "Did you update documentation on tizen.org" + # Make sure the git index is up-to-date [ -z "$(git status --porcelain)" ] || fatal "git index is not up-to-date" +# Change the version in the 'bmaptool' file +sed -i -e "s/^VERSION = \"[0-9]\+\.[0-9]\+\"$/VERSION = \"$new_ver\"/" bmaptool +# Sed the version in the RPM spec file +sed -i -e "s/^Version: [0-9]\+\.[0-9]\+$/Version: $new_ver/" packaging/bmap-tools.spec + +# Ask the maintainer for changelog lines +logfile="$(mktemp -t "$PROG.XXXX")" +cat > "$logfile" < "$deblogfile" +format_changelog "$logfile" " * " " " >> "$deblogfile" +printf "\n%s\n\n" " -- Artem Bityutskiy $(date -R)" >> "$deblogfile" +cat debian/changelog >> "$deblogfile" +mv "$deblogfile" debian/changelog + +# Prepare RPM changelog +rpmlogfile="$(mktemp -t "$PROG.XXXX")" +printf "%s\n" "$(date --utc) - Artem Bityutskiy ${new_ver}-1" > "$rpmlogfile" +format_changelog "$logfile" "- " " " >> "$rpmlogfile" +printf "\n" >> "$rpmlogfile" +cat packaging/bmap-tools.changes >> "$rpmlogfile" +mv "$rpmlogfile" packaging/bmap-tools.changes + +rm "$logfile" + +# Commit the changes +git commit -a -s -m "Release version $new_ver" + outdir="." tag_name="v$new_ver" release_name="bmap-tools-$new_ver" # Create new signed tag -echo "Signing tag $tag_name" +printf "%s\n" "Signing tag $tag_name" git tag -m "$release_name" -s "$tag_name" # Prepare a signed tarball git archive --format=tar --prefix="$release_name/" "$tag_name" | \ gzip > "$outdir/$release_name.tgz" -echo "Signing the tarball" +printf "%s\n" "Signing the tarball" gpg -o "$outdir/$release_name.tgz.asc" --detach-sign -a "$outdir/$release_name.tgz" # Get the name of the release branch corresponding to this version release_branch="release-$(printf "%s" "$new_ver" | sed -e 's/\(.*\)\..*/\1.0/')" cat <