-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
90 lines (65 loc) · 2.45 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
PKGS = $(shell go list ./... | grep -v /vendor/ | grep -v /bindata)
VERSION = $(shell git describe)
VERSION64 = $(shell git describe | base64)
SHA = $(shell git rev-parse HEAD)
PWD = $(shell pwd)
SELF_HOST_FLAGS = -ldflags "-s -w -X main.version=$(VERSION64) -X main.versionVoid=${VERSION} -X main.sha=$(SHA) -X main.development=0"
WINDOWS_ENVS = GOOS="windows" GOARCH="amd64" CGO_ENABLED="1" CC="/usr/local/opt/mingw-w64/bin/x86_64-w64-mingw32-gcc"
WINDOWS_FILENAME = snb.$(VERSION).windows.amd64.exe
LINUX_ENVS = GOOS="linux" GOARCH="amd64" CGO_ENABLED="1"
LINUX_FILENAME = dkf.$(VERSION).linux.amd64
build-docker-bin: bindata-prod
docker run --rm -it -v $(PWD):/root/dkf -w /root/dkf $(DOCKER_IMG) sh -c \
'$(ENVS) go build --tags "fts5" -gcflags=all=-trimpath=$(GOPATH) $(SELF_HOST_FLAGS) -o dist/$(FILENAME) cmd/dkf/main.go'
build-linux: ENVS=$(LINUX_ENVS)
build-linux: DOCKER_IMG=golang:1.19-buster
build-linux: FILENAME=$(LINUX_FILENAME)
build-linux: build-docker-bin tar-file clean-file build-checksum
tar-file:
tar -czvf dist/$(FILENAME).tar.gz dist/$(FILENAME)
zip-file:
zip dist/$(FILENAME).zip dist/$(FILENAME)
build-checksum:
openssl dgst -sha256 dist/$(FILENAME).tar.gz | cut -d ' ' -f 2 > dist/$(FILENAME).tar.gz.checksum
build-checksum-zip:
openssl dgst -sha256 dist/$(FILENAME).zip | cut -d ' ' -f 2 > dist/$(FILENAME).zip.checksum
clean-file:
rm dist/$(FILENAME)
clean-dist:
rm -fr ./dist
test:
@go test $(PKGS)
bindata:
go-bindata $(DEBUG) -pkg bindata -o bindata/bindata.go -prefix "pkg/web/public/" pkg/web/public/...
bindata-dev: DEBUG=-debug
bindata-dev: bindata
bindata-prod: DEBUG=
bindata-prod: bindata
scp-master: FILENAME=$(LINUX_FILENAME)
scp-master:
scp -pr dist/$(FILENAME).tar.gz dkf:/home/dkf
extract-master: FILENAME=$(LINUX_FILENAME)
extract-master:
ssh dkf 'cd /home/dkf && tar -xvz -f$(FILENAME).tar.gz && cp ./dist/darkforest ./dist/darkforest_prev && mv ./dist/$(FILENAME) ./dist/darkforest && rm $(FILENAME).tar.gz'
rollback-master:
ssh dkf 'cd /home/dkf && mv ./dist/darkforest_prev ./dist/darkforest'
restart-master:
ssh dkf 'service dkf restart'
deploy-master: clean-dist build-linux scp-master extract-master restart-master
rollback: rollback-master restart-master
serve:
air
count:
@find \
./pkg \
./scripts \
-name '*.go' \
| xargs wc -l \
| sort
size:
@find \
./pkg \
./scripts \
-name '*.go' \
| xargs du -sch
.PHONY: serve bindata bindata-dev