Makefile

 1.PHONY: build test run clean lint fmt vet build-full
 2
 3BINARY_NAME=matcha
 4BUILD_DIR=bin
 5
 6generate_gif:
 7	alias matcha="go run ."
 8	vhs demo.tape
 9	mv demo.gif public/assets/demo.gif
10
11build:
12	go build -o $(BUILD_DIR)/$(BINARY_NAME) .
13
14build-full:
15	@echo "Building with version information..."
16	@VERSION=$$(git describe --tags --abbrev=0 2>/dev/null || echo "dev"); \
17	COMMIT=$$(git rev-parse --short HEAD 2>/dev/null || echo "unknown"); \
18	DATE=$$(date +%Y-%m-%d); \
19	echo "Version: $$VERSION"; \
20	echo "Commit: $$COMMIT"; \
21	echo "Date: $$DATE"; \
22	go build -ldflags="-X 'main.version=$$VERSION' -X 'main.commit=$$COMMIT' -X 'main.date=$$DATE'" -o $(BUILD_DIR)/$(BINARY_NAME)-full .;
23
24run:
25	go run .
26
27test:
28	go test ./...
29
30test-verbose:
31	go test -v ./...
32
33test-coverage:
34	go test -coverprofile=coverage.out ./...
35	go tool cover -html=coverage.out -o coverage.html
36
37clean:
38	rm -rf $(BUILD_DIR)
39	rm -f coverage.out coverage.html
40
41fmt:
42	go fmt ./...
43
44vet:
45	go vet ./...
46
47lint: fmt vet
48
49all: lint test build