1- .PHONY : build build-no-restart install clean test deploy
1+ .PHONY : build build-no-restart build-ty build-taskd restart-daemon build-linux \
2+ install clean test vet vuln audit coverage run daemon \
3+ deploy deploy-service deploy-full status logs connect tag fmt lint
24
35# Configuration
46SERVER ?= root@cloud-claude
@@ -8,18 +10,22 @@ REMOTE_DIR ?= /home/runner
810# Allow overriding the Go binary/toolchain (e.g. GO=go1.24.4 or mise exec -- go)
911GO ?= go
1012
13+ # Version from git tag (e.g. v0.2.3 → 0.2.3), falls back to "dev"
14+ VERSION ?= $(shell git describe --tags --always 2>/dev/null | sed 's/^v//' || echo dev)
15+ LDFLAGS := -s -w -X main.version=$(VERSION )
16+
1117# Build all binaries and (optionally) restart daemon if running
1218build : build-ty build-taskd restart-daemon
1319
1420# Build binaries without touching any running daemon
1521build-no-restart : build-ty build-taskd
1622
1723build-ty :
18- $(GO ) build -o bin/ty ./cmd/task
24+ $(GO ) build -ldflags= " $( LDFLAGS ) " - o bin/ty ./cmd/task
1925 ln -sf ty bin/taskyou
2026
2127build-taskd :
22- $(GO ) build -o bin/taskd ./cmd/taskd
28+ $(GO ) build -ldflags= " $( LDFLAGS ) " - o bin/taskd ./cmd/taskd
2329
2430# Restart daemon if it's running (silent if not). Never fail the build if we lack permissions.
2531restart-daemon :
@@ -34,21 +40,38 @@ restart-daemon:
3440
3541# Build for Linux (server deployment)
3642build-linux :
37- GOOS=linux GOARCH=amd64 go build -o bin/taskd-linux ./cmd/taskd
43+ GOOS=linux GOARCH=amd64 go build -ldflags= " $( LDFLAGS ) " - o bin/taskd-linux ./cmd/taskd
3844
3945# Install to GOBIN (usually ~/go/bin) - installs as 'ty', 'taskyou' (symlink), and 'taskd'
4046install :
41- go build -o $(shell go env GOBIN) /ty ./cmd/task
47+ go build -ldflags= " $( LDFLAGS ) " - o $(shell go env GOBIN) /ty ./cmd/task
4248 ln -sf ty $(shell go env GOBIN) /taskyou
43- go install ./cmd/taskd
49+ go build -ldflags= " $( LDFLAGS ) " -o $( shell go env GOBIN) /taskd ./cmd/taskd
4450
4551# Clean build artifacts
4652clean :
47- rm -rf bin/
53+ rm -rf bin/ dist/
4854
49- # Run tests
55+ # Run tests with race detector
5056test :
51- go test ./...
57+ go test -race ./...
58+
59+ # Run go vet
60+ vet :
61+ go vet ./...
62+
63+ # Run govulncheck
64+ vuln :
65+ govulncheck ./...
66+
67+ # Run all checks: vet, vuln, lint, test
68+ audit : vet vuln lint test
69+
70+ # Generate HTML coverage report
71+ coverage :
72+ go test -race -coverprofile=coverage.out ./...
73+ go tool cover -html=coverage.out -o coverage.html
74+ @echo " Coverage report: coverage.html"
5275
5376# Run the TUI locally (ty command)
5477run :
@@ -102,15 +125,6 @@ endif
102125 @echo "Done! GitHub Actions will build and publish the release."
103126 @echo "View at: https://github.com/bborn/taskyou/releases/tag/$(VERSION)"
104127
105- # Build for release (all platforms)
106- release :
107- GOOS=darwin GOARCH=amd64 go build -ldflags=" -s -w" -o bin/ty-darwin-amd64 ./cmd/task
108- GOOS=darwin GOARCH=arm64 go build -ldflags=" -s -w" -o bin/ty-darwin-arm64 ./cmd/task
109- GOOS=linux GOARCH=amd64 go build -ldflags=" -s -w" -o bin/ty-linux-amd64 ./cmd/task
110- GOOS=linux GOARCH=arm64 go build -ldflags=" -s -w" -o bin/ty-linux-arm64 ./cmd/task
111- GOOS=linux GOARCH=amd64 go build -ldflags=" -s -w" -o bin/taskd-linux-amd64 ./cmd/taskd
112- GOOS=linux GOARCH=arm64 go build -ldflags=" -s -w" -o bin/taskd-linux-arm64 ./cmd/taskd
113-
114128# Format code
115129fmt :
116130 go fmt ./...
0 commit comments