about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-08-29 12:45:45 -0700
committerEric Wong <normalperson@yhbt.net>2009-08-29 12:45:45 -0700
commit46a176a741ad4d19d81946b4232c0c26fb8bdbc8 (patch)
tree05035e8ce48019622a2d643d45b0ed020ae5259c
parent0a582a3a0f18d359792a523d3ca3ae25eba0b279 (diff)
downloadclogger-46a176a741ad4d19d81946b4232c0c26fb8bdbc8.tar.gz
-rw-r--r--GNUmakefile43
1 files changed, 41 insertions, 2 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 3481564..913f821 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -32,6 +32,45 @@ test: test-ext test-pure
 Manifest.txt:
         git ls-files > $@+
         cmp $@+ $@ || mv $@+ $@
-        $(RM) -f $@+
+        $(RM) $@+
 
-.PHONY: test doc Manifest.txt
+VERSION := $(shell git describe 2>/dev/null | sed 's/^v//')
+
+ifneq ($(VERSION),)
+v := /^v$(VERSION)$$/
+vPREV := $(shell git tag -l 2>/dev/null | sed -n -e '$(v)!h' -e '$(v){x;p;q}')
+release_notes := release_notes-$(VERSION).txt
+release_changes := release_changes-$(VERSION).txt
+$(release_changes): verify
+        git diff --stat $(vPREV) v$(VERSION) > $@+
+        echo >> $@+
+        git log $(vPREV) v$(VERSION) >> $@+
+        $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
+$(release_notes): verify package
+        gem spec pkg/clogger-$(VERSION).gem description | sed -ne '/\w/p' > $@+
+        git cat-file tag v$(VERSION) | awk 'p>1{print $$0}/^$$/{++p}' >> $@+
+        $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
+verify:
+        @test -n "$(VERSION)" || { echo >&2 VERSION= not defined; exit 1; }
+        git rev-parse --verify refs/tags/v$(VERSION)^{}
+        @test -n "$(VISUAL)" || { echo >&2 VISUAL= not defined; exit 1; }
+
+package: verify
+        git diff-index --quiet HEAD^0
+        test `git rev-parse --verify HEAD^0` = \
+             `git rev-parse --verify refs/tags/v$(VERSION)^{}`
+        $(RM) -r pkg
+        unset CLOGGER_EXT; rake package VERSION=$(VERSION)
+        CLOGGER_EXT=1 rake package VERSION=$(VERSION)
+
+# not using Hoe's release system since we release 2 gems but only one tgz
+release: package Manifest.txt $(release_notes) $(release_changes)
+        rubyforge add_release -f -n $(release_notes) -c $(release_changes) \
+          clogger clogger $(VERSION) pkg/clogger-$(VERSION).gem
+        rubyforge add_file \
+          clogger clogger $(VERSION) pkg/clogger-$(VERSION).tgz
+        rubyforge add_release -f -n $(release_notes) -c $(release_changes) \
+          clogger clogger_ext $(VERSION) pkg/clogger_ext-$(VERSION).gem
+endif
+
+.PHONY: test doc Manifest.txt release