/ 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