-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathMakefile
More file actions
82 lines (65 loc) · 2.34 KB
/
Makefile
File metadata and controls
82 lines (65 loc) · 2.34 KB
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
# Development tools are managed in tools/go.mod and installed to ./bin
GOBIN := $(shell pwd)/bin
# Tool binaries
LEFTHOOK := $(GOBIN)/lefthook
GOLANGCI_LINT := $(GOBIN)/golangci-lint
GOFUMPT := $(GOBIN)/gofumpt
SQLC := $(GOBIN)/sqlc
OAPI_CODEGEN := $(GOBIN)/oapi-codegen
.PHONY: install-tools install-hooks lint fmt sqlc api-generate build test clean
## Install all development tools to ./bin
install-tools: $(LEFTHOOK) $(GOLANGCI_LINT) $(GOFUMPT) $(SQLC) $(OAPI_CODEGEN)
$(LEFTHOOK):
GOBIN=$(GOBIN) go install -C tools github.com/evilmartians/lefthook
$(GOLANGCI_LINT):
GOBIN=$(GOBIN) go install -C tools github.com/golangci/golangci-lint/v2/cmd/golangci-lint
$(GOFUMPT):
GOBIN=$(GOBIN) go install -C tools mvdan.cc/gofumpt
$(SQLC):
GOBIN=$(GOBIN) go install -C tools github.com/sqlc-dev/sqlc/cmd/sqlc
$(OAPI_CODEGEN):
GOBIN=$(GOBIN) go install -C tools github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen
## Install git hooks using lefthook
install-hooks: $(LEFTHOOK)
$(LEFTHOOK) install
@echo "Patching hooks to use ./bin/lefthook..."
@for hook in .git/hooks/*; do \
if [ -f "$$hook" ] && grep -q 'call_lefthook' "$$hook" && ! grep -q 'export LEFTHOOK_BIN' "$$hook"; then \
sed -i.bak 's|call_lefthook|export LEFTHOOK_BIN="$$(git rev-parse --show-toplevel)/bin/lefthook"; call_lefthook|' "$$hook" && rm -f "$$hook.bak"; \
fi \
done
@echo "Hooks installed successfully"
## Run golangci-lint
lint: $(GOLANGCI_LINT)
$(GOLANGCI_LINT) run ./...
## Format Go code with gofumpt
fmt: $(GOFUMPT)
$(GOFUMPT) -l -w .
## Generate database models with sqlc
sqlc: $(SQLC)
$(SQLC) generate
## Generate API code from OpenAPI spec
api-generate: $(OAPI_CODEGEN)
./build/gen-api.sh
## Build the application
build:
go build -o owncast .
## Run tests
test:
go test ./...
## Clean build artifacts
clean:
rm -rf bin/
rm -f owncast
## Show help
help:
@echo "Available targets:"
@echo " install-tools - Install all development tools to ./bin"
@echo " install-hooks - Install git hooks using lefthook"
@echo " lint - Run golangci-lint"
@echo " fmt - Format Go code with gofumpt"
@echo " sqlc - Generate database models"
@echo " api-generate - Generate API code from OpenAPI spec"
@echo " build - Build the application"
@echo " test - Run tests"
@echo " clean - Remove build artifacts and tools"