Makefile
1512 bytes
1.PHONY: all lint govulncheck test air templ build gen-mocks migrate image-build
2
3DB_URI ?= postgres://ytrssil:ytrssil@localhost:5432/ytrssil?sslmode=disable
4
5bin:
6 mkdir bin
7bin/moq: bin
8 GOBIN=$(PWD)/bin go install github.com/matryer/moq@v0.7.1
9bin/golangci-lint: .golangci-lint-version | bin
10 GOBIN=$(PWD)/bin go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$$(cat .golangci-lint-version)
11bin/migrate: bin
12 GOBIN=$(PWD)/bin go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.20.1
13bin/air: bin
14 GOBIN=$(PWD)/bin go install github.com/air-verse/air@v1.67.4
15bin/govulncheck: bin
16 GOBIN=$(PWD)/bin go install golang.org/x/vuln/cmd/govulncheck@v1.8.0
17
18fmt:
19 go mod tidy
20 bin/golangci-lint fmt
21
22lint: bin/golangci-lint
23 go mod tidy -diff
24 go vet ./...
25 bin/golangci-lint run
26 bin/golangci-lint fmt -d
27 $(MAKE) govulncheck
28
29govulncheck: bin/govulncheck
30 bin/govulncheck ./...
31
32test:
33 go test -timeout=30s -race ./...
34
35air: bin/air
36 @./bin/air -c .air.toml
37
38templ:
39 go tool templ generate
40
41build: templ
42 go build -o dist/ytrssil ./cmd/main.go
43
44gen-mocks: bin/moq
45 ./bin/moq -pkg db_mock -out ./mocks/db/db.go ./db DB
46 ./bin/moq -pkg parser_mock -out ./mocks/feedparser/feedparser.go ./feedparser Parser
47 ./bin/moq -pkg youtube_mock -out ./mocks/youtube/youtube.go ./lib/clients/youtube Client
48 go fmt ./...
49
50migrate: bin/migrate
51 bin/migrate -database "$(DB_URI)" -path migrations up
52
53image-build:
54 docker buildx build --push -t theedgeofrage/ytrssil:api --target api .