/ Makefile
Makefile
1 SCRIPT_NAME := alpine-make-vm-image 2 3 DESTDIR := / 4 PREFIX := /usr/local 5 6 SED := sed 7 SHA1SUM := sha1sum 8 9 ifeq ($(shell uname -s),Darwin) 10 SED := gsed 11 SHA1SUM := shasum -a 1 12 endif 13 14 #: Update version in the script and README.adoc to $VERSION. 15 bump-version: 16 test -n "$(VERSION)" # $$VERSION 17 $(SED) -E -i "s/^(readonly VERSION)=.*/\1='$(VERSION)'/" $(SCRIPT_NAME) 18 $(SED) -E -i "s/^(:version:).*/\1 $(VERSION)/" README.adoc 19 20 #: Install the script into $DESTDIR. 21 install: 22 mkdir -p $(DESTDIR)$(PREFIX)/bin 23 install -m 755 $(SCRIPT_NAME) $(DESTDIR)$(PREFIX)/bin/$(SCRIPT_NAME) 24 25 #: Update variable :script-sha1: in README.adoc with SHA1 checksum of the script. 26 readme-update-checksum: 27 $(SED) -E -i \ 28 -e "s/^(:script-sha1:).*/\1 $(shell $(SHA1SUM) $(SCRIPT_NAME) | cut -d ' ' -f 1)/" \ 29 README.adoc 30 31 #: Bump version to $VERSION, create release commit and tag. 32 release: .check-git-clean | bump-version readme-update-checksum 33 test -n "$(VERSION)" # $$VERSION 34 git add . 35 git commit -m "Release version $(VERSION)" 36 git tag -s v$(VERSION) -m v$(VERSION) 37 38 #: Print list of targets. 39 help: 40 @printf '%s\n\n' 'List of targets:' 41 @$(SED) -En '/^#:.*/{ N; s/^#: (.*)\n([A-Za-z0-9_-]+).*/\2 \1/p }' $(MAKEFILE_LIST) \ 42 | while read label desc; do printf '%-30s %s\n' "$$label" "$$desc"; done 43 44 .check-git-clean: 45 @test -z "$(shell git status --porcelain)" \ 46 || { echo 'You have uncommitted changes!' >&2; exit 1; } 47 48 .PHONY: bump-version install readme-update-checksum release help .check-git-clean