blob: 7a8faf9818688dc81e103c74611af7ef13c00ee5 [file] [log] [blame]
#!/bin/sh
##==============================================================================
## Copyright 2010 Erlang Solutions Ltd.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##==============================================================================
NAME=$1
VSN=$2
yesno() {
prompt=$1
while true; do
read -p "$1 [Y/n] " answer
case "x$answer" in
"x")
return 0
;;
"xY")
return 0
;;
"xy")
return 0
;;
"xN")
return 1
;;
"xn")
return 1
;;
*)
;;
esac
done
}
get_version() {
while true; do
read -p "What is the version of the release? [$VSN] " release_vsn
if [ "$release_vsn" = "" ]; then
release_vsn=$VSN
fi
if $(echo "$TAGS" | grep -q "^$release_vsn\$"); then
if yesno "A tag exists for version $release_vsn, is this correct?"; then
break
fi
else
if yesno "A tag doesn't exist for version $release_vsn, should one be created?"; then
hg tag $release_vsn
fi
break
fi
done
echo $release_vsn
}
if ! git branch 1>/dev/null 2>&1; then
echo "No git repository here..."
exit 1
fi
if ! [ "$(git branch | grep '^\*' | awk '{print $2};')" = "master" ]; then
if ! yesno "Repository is not at master, do you want to continue?"; then
exit 1
fi
fi
if ! yesno "Did the compilation run without warnings?"; then
echo "Try again..."
exit 1
fi
if ! yesno "Is the changelog up to date?"; then
echo "Try again..."
exit 1
fi
if ! yesno "Did dialyzer run without warnings?"; then
echo "Try again..."
exit 1
fi
TAGS=$(hg tags | awk '{print $1 };' | grep -v "^tip$")
LATEST_TAG=$(echo "$TAGS" | head -n 1)
RELEASE_VSN=$(get_version)
echo "Creating a release for $NAME-$RELEASE_VSN now."
archive="./$NAME-$RELEASE_VSN.tar.gz"
if [ -e $archive ]; then
echo "$archive exists, giving up."
exit 1
fi
echo hg archive -t tgz -X ".hg*" $archive