Makefile
1394 bytes
1.PHONY: all lint govulncheck test 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.8.0
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/govulncheck: bin
14 GOBIN=$(PWD)/bin go install golang.org/x/vuln/cmd/govulncheck@v1.9.0
15
16fmt:
17 go mod tidy
18 bin/golangci-lint fmt
19
20lint: bin/golangci-lint
21 go mod tidy -diff
22 go vet ./...
23 bin/golangci-lint run
24 bin/golangci-lint fmt -d
25 $(MAKE) govulncheck
26
27govulncheck: bin/govulncheck
28 bin/govulncheck ./...
29
30test:
31 go test -timeout=30s -race ./...
32
33templ:
34 go tool templ generate
35
36build: templ
37 go build -o dist/ytrssil ./cmd/main.go
38
39gen-mocks: bin/moq
40 ./bin/moq -pkg db_mock -out ./mocks/db/db.go ./db DB
41 ./bin/moq -pkg parser_mock -out ./mocks/feedparser/feedparser.go ./feedparser Parser
42 ./bin/moq -pkg youtube_mock -out ./mocks/youtube/youtube.go ./lib/clients/youtube Client
43 go fmt ./...
44
45migrate: bin/migrate
46 bin/migrate -database "$(DB_URI)" -path migrations up
47
48image-build:
49 docker buildx build --push -t theedgeofrage/ytrssil:api --target api .