-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
128 lines (99 loc) · 3.49 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Note: tabs by space can't not used for Makefile!
CURRENTDIR=`pwd`
modVer=$(shell cat go.mod | head -n 3 | tail -n 1 | awk '{print $2}' | cut -d'.' -f2)
currentVer=$(shell go version | awk '{print $3}' | sed -e "s/go//" | cut -d'.' -f2)
gitTag=$(shell git tag | head -n 1)
###############################################################################
# Managing Dependencies
###############################################################################
.PHONY: check-ver
check-ver:
#echo $(modVer)
#echo $(currentVer)
@if [ ${currentVer} -lt ${modVer} ]; then\
echo go version ${modVer}++ is required but your go version is ${currentVer};\
fi
.PHONY: update
update:
GO111MODULE=off go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
go get -u -d -v ./...
###############################################################################
# Golang formatter and detection
###############################################################################
.PHONY: imports
imports:
./scripts/imports.sh
.PHONY: lint
lint:
golangci-lint run --fix
.PHONY: lintall
lintall: imports lint
###############################################################################
# Build
###############################################################################
.PHONY: build
build:
go build -v -o ${GOPATH}/bin/book ./cmd/book/
.PHONY: build-version
build-version:
go build -ldflags "-X main.version=${gitTag}" -v -o ${GOPATH}/bin/book ./cmd/book/
.PHONY: run
run:
go run -v ./cmd/book/
###############################################################################
# Test
###############################################################################
.PHONY: test
test:
go test -v -race ./cmd/book
#go test -v -covermode=count -coverprofile=profile.cov cmd/book/*.go -t ${PWD}/data/toml/mailon.toml
###############################################################################
# Release
# https://github.com/goreleaser/goreleaser
###############################################################################
.PHONY: release
release:
#goreleaser release
goreleaser release --rm-dist
rm -rf book-teacher.json book-teacher.toml
.PHONY: brew-install
brew-install:
brew install hiromaily/tap/go-book-teacher
# book-teacher
brew-uninstall:
brew uninstall hiromaily/tap/go-book-teacher
brew-update:
brew update
.PHONY: brew-reinstall
brew-reinstall: brew-uninstall brew-update brew-install
###############################################################################
# Tools
# Note: environment variable `ENC_KEY`, `ENC_IV` should be set in advance
###############################################################################
.PHONY: tool-encode
tool-encode:
go run ./tools/encryption/ -encode important-password
.PHONY: tool-decode
tool-decode:
go run ./tools/encryption/ -decode o5PDC2aLqoYxhY9+mL0W/IdG+rTTH0FWPUT4u1XBzko=
###############################################################################
# Docker
###############################################################################
.PHONY: dclogin
dclogin:
docker-compose exec book bash
.PHONY: dcexec
dcexec:
docker-compose exec book /bin/sh -c "book -t ./config/text-command.toml"
###############################################################################
# Heroku
###############################################################################
.PHONY: heroku-deploy
heroku-deploy:
git push -f heroku master
.PHONY: heroku-run
heroku-run:
heroku run book -toml /app/configs/heroku.toml
.PHONY: heroku-run-bash
heroku-run-bash:
heroku run bash