Commits

Oscar Hellström  committed 40fdd23

Add releaser

  • Participants
  • Parent commits ccd7b72
  • Branches 1.2

Comments (0)

Files changed (2)

 	@echo Cleaning
 	@rm -f ebin/*.{beam,app} test/*.beam doc/*.{html,css,png} doc/edoc-info
 	@rm -r cover_report
+
+release: clean all test dialyzer
+	@echo All tests and dialyzer passed, starting releaser
+	@util/releaser $(APPLICATION) $(VSN)

File util/releaser

+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Copyright (c) 2009, Erlang Training and Consulting Ltd.
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#    * Redistributions of source code must retain the above copyright
+#      notice, this list of conditions and the following disclaimer.
+#    * Redistributions in binary form must reproduce the above copyright
+#      notice, this list of conditions and the following disclaimer in the
+#      documentation and/or other materials provided with the distribution.
+#    * Neither the name of Erlang Training and Consulting Ltd. nor the
+#      names of its contributors may be used to endorse or promote products
+#      derived from this software without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY Erlang Training and Consulting Ltd. ''AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL Erlang Training and Consulting Ltd. BE
+# LIABLE SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ----------------------------------------------------------------------------
+# Script for making a release of lhttpc. Or any program in hg really. Check
+# the Makefile target release for how to use it.
+
+if ! hg identify 1>/dev/null 2>&1; then
+    echo "No hg repository here..."
+    exit 1
+fi
+
+if ! [ "$(hg identify | awk '{print $2};')" = "tip" ]; then
+    echo "Repository is not at tip, do you want to continue?"
+    if ! yesno; then
+        exit 1
+    fi
+fi
+
+
+NAME=$1
+VSN=$2
+TAGS=$(hg tags | awk '{print $1 };' | grep -v "^tip$")
+LATEST_TAG=$(echo "$TAGS" | head -n 1)
+
+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
+}
+
+
+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
+hg archive -t tgz -X ".hg*" $archive