# Majority of this script was borrowed from git-extra: # https://github.com/tj/git-extras/blob/98d0d8c642ea2643f513bc41fcb9dd3078cf2e59/Makefile PREFIX ?= /usr/local BINPREFIX ?= "$(PREFIX)/bin" MANPREFIX ?= "$(PREFIX)/share/man/man1" SYSCONFDIR ?= $(PREFIX)/etc BINS = $(wildcard bin/git-*) MANS = $(wildcard man/git-*.md) MAN_HTML = $(MANS:.md=.html) MAN_PAGES = $(MANS:.md=.1) COMMANDS = $(subst bin/, , $(BINS)) default: install docs: $(MAN_HTML) $(MAN_PAGES) install: @mkdir -p $(DESTDIR)$(MANPREFIX) @mkdir -p $(DESTDIR)$(BINPREFIX) @echo "... installing bins to $(DESTDIR)$(BINPREFIX)" @echo "... installing man pages to $(DESTDIR)$(MANPREFIX)" $(eval TEMPFILE := $(shell mktemp -q $${TMPDIR:-/tmp}/git-vendor.XXXXXX 2>/dev/null || mktemp -q)) @# chmod from rw-------(default) to rwxrwxr-x, so that users can exec the scripts @chmod 775 $(TEMPFILE) $(eval EXISTED_ALIASES := $(shell \ git config --get-regexp 'alias.*' | awk '{print "git-" substr($$1, 7)}')) @$(foreach COMMAND, $(COMMANDS), \ disable=''; \ if test ! -z "$(filter $(COMMAND), $(EXISTED_ALIASES))"; then \ read -p "$(COMMAND) conflicts with an alias, still install it and disable the alias? [y/n]" answer; \ test "$$answer" = 'n' -o "$$answer" = 'N' && disable="true"; \ fi; \ if test -z "$$disable"; then \ echo "... installing $(COMMAND)"; \ cat bin/$(COMMAND) > $(TEMPFILE); \ cp -f $(TEMPFILE) $(DESTDIR)$(BINPREFIX)/$(COMMAND); \ fi; \ ) @if [ -z "$(wildcard man/git-*.1)" ]; then \ echo "WARNING: man pages not created, use 'make docs' (which requires 'ronn' ruby lib)"; \ else \ cp -f man/git-*.1 $(DESTDIR)$(MANPREFIX); \ echo "cp -f man/git-*.1 $(DESTDIR)$(MANPREFIX)"; \ fi @mkdir -p $(DESTDIR)$(SYSCONFDIR)/bash_completion.d cp -f etc/bash_completion.sh $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/git-vendor man/%.html: man/%.md ronn \ --manual "Git Vendor" \ --html \ --pipe \ $< > $@ man/%.1: man/%.md ronn -r \ --manual "Git Vendor" \ --pipe \ $< > $@ uninstall: @$(foreach BIN, $(BINS), \ echo "... uninstalling $(DESTDIR)$(BINPREFIX)/$(notdir $(BIN))"; \ rm -f $(DESTDIR)$(BINPREFIX)/$(notdir $(BIN)); \ ) @$(foreach MAN, $(MAN_PAGES), \ echo "... uninstalling $(DESTDIR)$(MANPREFIX)/$(notdir $(MAN))"; \ rm -f $(DESTDIR)$(MANPREFIX)/$(notdir $(MAN)); \ ) rm -f $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/git-vendor clean: docclean docclean: rm -f man/*.1 rm -f man/*.html .PHONY: default docs clean docclean install uninstall