-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
78 lines (61 loc) · 1.98 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
VERSION ?= 0.0.2
BINARIES := linux/amd64/ecso windows/amd64/ecso.exe darwin/amd64/ecso
GITHUB_USER := bernos
GITHUB_REPO := ecso
RELEASE_DIR := bin/release
UPLOAD_LIST := $(foreach file, $(BINARIES), $(file)_upload)
NO_COLOR := \033[0m
OK_COLOR := \033[32;01m
ERROR_COLOR := \033[31;01m
WARN_COLOR := \033[33;01m
all: $(BINARIES)
build:
go build -o bin/local/ecso
clean:
@echo "\n$(OK_COLOR)====> Cleaning$(NO_COLOR)"
go clean ./... && rm -rf ./$(RELEASE_DIR)
clean-docs:
rm -f ./docs/docs.md
deps:
@echo "\n$(OK_COLOR)====> Fetching depenencies$(NO_COLOR)"
go get -v github.com/aktau/github-release/...
go get -v github.com/jteeuwen/go-bindata/...
ls $(GOPATH)
ls $(GOPATH)/bin
docs: test build clean-docs
go run cmd/make-docs/main.go > ./docs/docs.md
install: test
@echo "\n$(OK_COLOR)====> Installing$(NO_COLOR)"
go install -ldflags "-X main.version=$(VERSION)"
release: tag $(BINARIES)
@echo "\n$(OK_COLOR)====> Releasing v$(VERSION)$(NO_COLOR)"
$(MAKE) .release GIT_TAG=$(shell git describe --abbrev=0 --tags)
tag:
@echo "\n$(OK_COLOR)====> Tagging v$(VERSION)$(NO_COLOR)"
git tag -a v$(VERSION) -m 'release $(VERSION)'
generate: deps
@echo "\n$(OK_COLOR)====> Embedding assets$(NO_COLOR)"
go generate -x ./pkg/...
test: generate
@echo "\n$(OK_COLOR)====> Running tests$(NO_COLOR)"
go test ./pkg/... ./cmd/...
.release: .create-github-release $(UPLOAD_LIST)
.create-github-release:
git push && git push --tags
github-release release \
-u $(GITHUB_USER) \
-r $(GITHUB_REPO) \
-t $(GIT_TAG) \
-n $(GIT_TAG)
$(UPLOAD_LIST): %_upload:
github-release upload \
-u $(GITHUB_USER) \
-r $(GITHUB_REPO) \
-t $(GIT_TAG) \
-n $(subst /,-,$*) \
-f $(RELEASE_DIR)/$*
$(BINARIES): osarch=$(subst /, ,$@)
$(BINARIES): test
@echo "\n$(OK_COLOR)====> Building $@$(NO_COLOR)"
GOOS=$(word 1, $(osarch)) GOARCH=$(word 2, $(osarch)) go build -a -ldflags "-X main.version=$(VERSION)" -o $(RELEASE_DIR)/$@ main.go
.PHONY: release tag test deps clean install docs generate