-
-
Notifications
You must be signed in to change notification settings - Fork 75
/
Makefile
155 lines (139 loc) · 5.34 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
PLUGIN_NAME="caddy-security"
PLUGIN_VERSION:=$(shell cat VERSION | head -1)
GIT_COMMIT:=$(shell git describe --dirty --always)
GIT_BRANCH:=$(shell git rev-parse --abbrev-ref HEAD -- | head -1)
LATEST_GIT_COMMIT:=$(shell git log --format="%H" -n 1 | head -1)
BUILD_USER:=$(shell whoami)
BUILD_DATE:=$(shell date +"%Y-%m-%d")
BUILD_DIR:=$(shell pwd)
CADDY_VERSION="v2.7.5"
all: info build
@echo "$@: complete"
.PHONY: info
info:
@echo "DEBUG: Version: $(PLUGIN_VERSION), Branch: $(GIT_BRANCH), Revision: $(GIT_COMMIT)"
@echo "DEBUG: Build on $(BUILD_DATE) by $(BUILD_USER)"
.PHONY: build
build:
@mkdir -p bin/
@rm -rf ./bin/authcrunch
@go build -v -o ./bin/authcrunch cmd/authcrunch/main.go;
@./bin/authcrunch version
@for f in `find ./assets -type f -name 'Caddyfile'`; do bin/authcrunch fmt --overwrite $$f; done
@echo "$@: complete"
.PHONY: devbuild
devbuild:
@mkdir -p bin/
@rm -rf ./bin/authcrunch
@rm -rf ../xcaddy-$(PLUGIN_NAME)/*
@mkdir -p ../xcaddy-$(PLUGIN_NAME) && cd ../xcaddy-$(PLUGIN_NAME) && \
xcaddy build $(CADDY_VERSION) --output ../$(PLUGIN_NAME)/bin/authcrunch \
--with github.com/greenpau/caddy-security@$(LATEST_GIT_COMMIT)=$(BUILD_DIR) \
--with github.com/greenpau/caddy-trace@latest \
--with github.com/greenpau/go-authcrunch@v1.1.4=/home/greenpau/dev/go/src/github.com/greenpau/go-authcrunch
@go build -v -o ./bin/authcrunch cmd/authcrunch/main.go;
@./bin/authcrunch version
@echo "$@: complete"
.PHONY: linter
linter:
@echo "$@: started"
@#golint -set_exit_status ./...
@echo "$@: complete"
.PHONY: test
test: covdir linter
@echo "$@: started"
@echo "DEBUG: started $@"
@go test -v -coverprofile=.coverage/coverage.out ./...
@echo "$@: complete"
.PHONY: ctest
ctest: covdir linter
@echo "$@: started"
@echo "DEBUG: started $@"
@#time richgo test -v -coverprofile=.coverage/coverage.out ./...
@time richgo test -v -coverprofile=.coverage/coverage.out ./*.go
@echo "$@: complete"
.PHONY: covdir
covdir:
@echo "$@: started"
@mkdir -p .coverage
@echo "$@: complete"
.PHONY: bindir
bindir:
@echo "$@: started"
@mkdir -p bin/
@echo "$@: complete"
.PHONY: coverage
coverage: covdir
@echo "$@: started"
@go tool cover -html=.coverage/coverage.out -o .coverage/coverage.html
@go test -covermode=count -coverprofile=.coverage/coverage.out ./...
@go tool cover -func=.coverage/coverage.out | grep -v "100.0"
@echo "$@: complete"
.PHONY: clean
clean:
@echo "$@: started"
@rm -rf .coverage/
@rm -rf bin/
@echo "$@: complete"
.PHONY: qtest
qtest: covdir
@echo "$@: started"
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestApp ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileAppConfig ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileIdentity ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileSingleSignOnProvider ./*.go
@time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileAuthenticationMisc ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileCredentials ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileMessaging ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileIdentit* ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileAuthentication ./*.go
@#time richgo test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfileAuthorization ./*.go
@#go test -v -coverprofile=.coverage/coverage.out -run TestParseCaddyfile ./*.go
@#go test -v -coverprofile=.coverage/coverage.out -run Test* ./pkg/services/...
@go tool cover -html=.coverage/coverage.out -o .coverage/coverage.html
@go tool cover -func=.coverage/coverage.out | grep -v "100.0"
@echo "$@: complete"
.PHONY: dep
dep:
@echo "$@: started"
@go install golang.org/x/lint/golint@latest
@go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
@#go install github.com/goreleaser/goreleaser@latest
@go install github.com/greenpau/versioned/cmd/versioned@latest
@go install github.com/kyoh86/richgo@latest
@echo "$@: complete"
.PHONY: release
release:
@echo "$@: started"
@go mod tidy;
@go mod verify;
@if [ $(GIT_BRANCH) != "main" ]; then echo "cannot release to non-main branch $(GIT_BRANCH)" && false; fi
@git diff-index --quiet HEAD -- || ( echo "git directory is dirty, commit changes first" && false )
@versioned -patch
@echo "Patched version"
@assets/scripts/generate_downloads.sh
@git add VERSION README.md
@git commit -m "released v`cat VERSION | head -1`"
@git tag -a v`cat VERSION | head -1` -m "v`cat VERSION | head -1`"
@git push
@git push --tags
@@echo "If necessary, run the following commands:"
@echo " git push --delete origin v$(PLUGIN_VERSION)"
@echo " git tag --delete v$(PLUGIN_VERSION)"
@echo "$@: complete"
.PHONY: logo
logo:
@echo "$@: started"
@mkdir -p assets/docs/images
@gm convert -background black -font Bookman-Demi \
-size 640x320 "xc:black" \
-pointsize 72 \
-draw "fill white gravity center text 0,0 'caddy\nsecurity'" \
assets/docs/images/logo.png
@echo "$@: complete"
.PHONY: license
license:
@echo "$@: started"
@for f in `find ./ -type f -name '*.go'`; do versioned -addlicense -copyright="Paul Greenberg greenpau@outlook.com" -year=2022 -filepath=$$f; done
@assets/scripts/generate_downloads.sh
@echo "$@: complete"