-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
88 lines (75 loc) · 3.09 KB
/
Makefile
File metadata and controls
88 lines (75 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
dist: dist/stackctl.tar.gz
ARCHIVE_TARGETS := \
dist/stackctl/stackctl \
dist/stackctl/completion/bash \
dist/stackctl/completion/fish \
dist/stackctl/completion/zsh \
dist/stackctl/doc/stackctl.1 \
dist/stackctl/doc/stackctl.5 \
dist/stackctl/doc/stackctl-cat.1 \
dist/stackctl/doc/stackctl-capture.1 \
dist/stackctl/doc/stackctl-changes.1 \
dist/stackctl/doc/stackctl-deploy.1 \
dist/stackctl/doc/stackctl-version.1 \
dist/stackctl/Makefile
dist/stackctl.tar.gz: $(ARCHIVE_TARGETS)
tar -C ./dist -czvf $@ ./stackctl
SRCS := $(shell \
find ./src ./app -name '*.hs'; \
echo stack.yaml; \
echo stackctl.cabal \
)
dist/stackctl/stackctl: $(SRCS)
mkdir -p ./dist/stackctl
stack build --pedantic --test --copy-bins --local-bin-path dist/stackctl
dist/stackctl/completion/%: dist/stackctl/stackctl
mkdir -p ./dist/stackctl/completion
./$< --$(@F)-completion-script stackctl > dist/stackctl/completion/$(@F)
dist/stackctl/doc/%: man/%.ronn
mkdir -p ./dist/stackctl/doc
ronn --organization "Freckle Engineering" --roff <"$<" >"$@"
dist/stackctl/Makefile: Makefile
mkdir -p dist/stackctl
cp $< $@
.PHONY: clean
clean:
$(RM) -r ./dist
stack clean --full
DESTDIR ?=
PREFIX ?= /usr/local
MANPREFIX ?= $(PREFIX)/share/man
INSTALL ?= $(shell command -v ginstall 2>/dev/null || echo install)
.PHONY: install
install:
$(INSTALL) -Dm755 stackctl $(DESTDIR)$(PREFIX)/bin/stackctl
$(INSTALL) -Dm644 completion/bash $(DESTDIR)$(PREFIX)/share/bash-completion/completions/stackctl
$(INSTALL) -Dm644 completion/fish $(DESTDIR)$(PREFIX)/share/fish/vendor_completions.d/stackctl.fish
$(INSTALL) -Dm644 completion/zsh $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_stackctl
$(INSTALL) -Dm644 doc/stackctl.1 $(DESTDIR)$(MANPREFIX)/man1/stackctl.1
$(INSTALL) -Dm644 doc/stackctl.5 $(DESTDIR)$(MANPREFIX)/man5/stackctl.5
$(INSTALL) -Dm644 doc/stackctl-cat.1 $(DESTDIR)$(MANPREFIX)/man1/stackctl-cat.1
$(INSTALL) -Dm644 doc/stackctl-capture.1 $(DESTDIR)$(MANPREFIX)/man1/stackctl-capture.1
$(INSTALL) -Dm644 doc/stackctl-changes.1 $(DESTDIR)$(MANPREFIX)/man1/stackctl-changes.1
$(INSTALL) -Dm644 doc/stackctl-deploy.1 $(DESTDIR)$(MANPREFIX)/man1/stackctl-deploy.1
$(INSTALL) -Dm644 doc/stackctl-version.1 $(DESTDIR)$(MANPREFIX)/man1/stackctl-version.1
.PHONY: uninstall
uninstall:
$(RM) $(DESTDIR)$(PREFIX)/bin/stackctl
$(RM) $(DESTDIR)$(PREFIX)/share/bash-completion/completions/stackctl
$(RM) $(DESTDIR)$(PREFIX)/share/fish/vendor_completions.d/stackctl.fish
$(RM) $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_stackctl
$(RM) $(DESTDIR)$(MANPREFIX)/man1/stackctl.1
$(RM) $(DESTDIR)$(MANPREFIX)/man5/stackctl.5
$(RM) $(DESTDIR)$(MANPREFIX)/man1/stackctl-cat.1
$(RM) $(DESTDIR)$(MANPREFIX)/man1/stackctl-capture.1
$(RM) $(DESTDIR)$(MANPREFIX)/man1/stackctl-changes.1
$(RM) $(DESTDIR)$(MANPREFIX)/man1/stackctl-deploy.1
$(RM) $(DESTDIR)$(MANPREFIX)/man1/stackctl-version.1
.PHONY: install.check
install.check: dist/stackctl.tar.gz
cp dist/stackctl.tar.gz /tmp && \
cd /tmp && \
tar xvf stackctl.tar.gz && \
cd stackctl && \
make install PREFIX=$$HOME/.local
PATH=$$HOME/.local/bin:$$PATH stackctl version