about summary refs log tree commit homepage
diff options
context:
space:
mode:
-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