Simplify git calls. Remove archive when generation fails.
[string-lerp.git] / Makefile
index 9d74d81..c20843c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -4,11 +4,10 @@ PKGNAME := string-lerp
 
 fallback = $(firstword $(shell command -v $(1)) $(2))
 
-git = $(shell GIT_DIR=$(firstword $(2) $(srcdir) .)/.git $(GIT) $(1))
-git_ls-tree = $(call git,ls-tree -r --name-only $(1),$(2))
-git_tag = $(call git,name-rev --tags --name-only $(call git,rev-parse $(1),$(2)),$(2))
-
 GIT ?= git
+git_ls-tree = $(shell $(GIT) ls-tree -r --name-only $(1))
+git_tag = $(shell $(GIT) name-rev --tags --name-only $(shell $(GIT) rev-parse $(1)))
+
 NPM ?= npm
 NPMBINDIR := ./node_modules/.bin
 JSTEST ?= $(NPMBINDIR)/jstest
@@ -22,7 +21,7 @@ LINT_TARGETS = $(patsubst %.js,build/stamp/%.lint,$(SOURCES))
 TEST_TARGETS = $(patsubst %.js,build/stamp/%.test,$(SOURCES)) \
                $(patsubst tests/%.js,build/stamp/%.test,$(TESTS))
 
-.PHONY: all check lint test ugly dist clean distclean
+.PHONY: all check lint test ugly dist clean distclean install
 
 all:
        @echo "Interesting targets:"
@@ -31,7 +30,7 @@ all:
        @echo "    ugly - generate minified/mangled source files"
        @echo "    dist - generate redistributables (if git tagged)"
        @echo
-       @echo "(Running these may download packages from NPM.)"
+       @echo "(Running these may download packages from npm.)"
        @echo
 
 %.min.js: %.js | $(UGLIFY)
@@ -68,12 +67,12 @@ build/dist/$(PKGNAME)-undefined.zip build/dist/$(PKGNAME)-undefined.tar.gz:
 .SECONDEXPANSION:
 build/dist/$(PKGNAME)-%.zip: $$(call git_ls-tree,$$*)
        @mkdir -p $(@D)
-       git archive --prefix=$(PKGNAME)-$*/ --output=$@ $*
+       $(GIT) archive --prefix=$(PKGNAME)-$*/ --output=$@ $* || ($(RM) $@ && exit 1)
 
 .SECONDEXPANSION:
 build/dist/$(PKGNAME)-%.tar.gz: $$(call git_ls-tree,$$*)
        @mkdir -p $(@D)
-       git archive --prefix=$(PKGNAME)-$*/ --output=$@ $*
+       $(GIT) archive --prefix=$(PKGNAME)-$*/ --output=$@ $* || ($(RM) $@ && exit 1)
 
 dist: check $(addprefix build/dist/$(PKGNAME)-$(call git_tag,HEAD),.zip .tar.gz)
 
@@ -84,6 +83,9 @@ clean:
 distclean: clean
        $(RM) -r node_modules
 
+install: check
+       $(NPM) install -g .
+
 $(JSTEST):
        $(NPM) install jstest