forked from asciinema/asciinema
/
Makefile
68 lines (50 loc) · 1.9 KB
/
Makefile
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
NAME=asciinema
VERSION=$(shell grep 'const Version' main.go | awk -F '"' '{print $$2}')
COMMIT=$(shell git rev-parse --short HEAD)
DIRS=bin
INSTALL_DIRS=`find $(DIRS) -type d 2>/dev/null`
INSTALL_FILES=`find $(DIRS) -type f 2>/dev/null`
DOC_FILES=*.md LICENSE
PREFIX?=/usr/local
DOC_DIR=$(PREFIX)/share/doc/$(NAME)
.PHONY: build test fmt fmtdiff travis gox tag push release install uninstall binary-tarballs os-arch-tgz
all: build
build: test
go build -o bin/asciinema -ldflags "-X main.GitCommit $(COMMIT)"
test:
go test ./...
fmt:
go fmt ./...
fmtdiff:
find . -type f -name "*.go" | xargs gofmt -d
travis: build fmtdiff
gox:
gox -os="darwin linux" -arch="386 amd64" -output="bin/asciinema_{{.OS}}_{{.Arch}}" -ldflags "-X main.GitCommit $(COMMIT)"
tag:
git tag | grep "v$(VERSION)" && echo "Tag v$(VERSION) exists" && exit 1 || true
git tag -s -m "Releasing $(VERSION)" v$(VERSION)
git push --tags
push:
echo "TODO: uploading binaries to github release"
release: test tag push
install:
for dir in $(INSTALL_DIRS); do mkdir -p $(DESTDIR)$(PREFIX)/$$dir; done
for file in $(INSTALL_FILES); do cp $$file $(DESTDIR)$(PREFIX)/$$file; done
mkdir -p $(DESTDIR)$(DOC_DIR)
cp -r $(DOC_FILES) $(DESTDIR)$(DOC_DIR)/
uninstall:
for file in $(INSTALL_FILES); do rm -f $(DESTDIR)$(PREFIX)/$$file; done
rm -rf $(DESTDIR)$(DOC_DIR)
binary-tarballs:
GOOS=darwin GOARCH=386 $(MAKE) os-arch-tgz
GOOS=darwin GOARCH=amd64 $(MAKE) os-arch-tgz
GOOS=linux GOARCH=386 $(MAKE) os-arch-tgz
GOOS=linux GOARCH=amd64 $(MAKE) os-arch-tgz
GOOS=linux GOARCH=arm $(MAKE) os-arch-tgz
cd dist/$(VERSION) && sha1sum *.tar.gz >sha1sum.txt
RELEASE=asciinema-$(VERSION)-$(GOOS)-$(GOARCH)
os-arch-tgz:
mkdir -p dist/$(VERSION)/$(RELEASE)
go build -o dist/$(VERSION)/$(RELEASE)/asciinema -ldflags "-X main.GitCommit $(COMMIT)"
cp README.md CHANGELOG.md LICENSE dist/$(VERSION)/$(RELEASE)
cd dist/$(VERSION) && tar czf $(RELEASE).tar.gz $(RELEASE)