BINARY := tm CMD := ./cmd/task-master VERSION_PKG := task/internal/version GIT_HASH := $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown) LDFLAGS := -X $(VERSION_PKG).BuildVersion=$(GIT_HASH) # Default: Go workspace bin (e.g. ~/go/bin). Override with: make install PREFIX=... GOPATH ?= $(shell go env GOPATH) PREFIX ?= $(GOPATH) INSTALL_BIN := $(PREFIX)/bin DEV_HOME := $(CURDIR)/.dev-home .PHONY: build run run-dev install uninstall test version demo build: go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) $(CMD) run: build ./bin/$(BINARY) # Sandbox: isolated config/data under ./.dev-home (does not touch ~/.config) run-dev: build TASK_MASTER_HOME=$(DEV_HOME) ./bin/$(BINARY) install: build install -d $(INSTALL_BIN) install -m 755 bin/$(BINARY) $(INSTALL_BIN)/$(BINARY) @echo "installed $(INSTALL_BIN)/$(BINARY)" uninstall: rm -f $(INSTALL_BIN)/$(BINARY) @echo "removed $(INSTALL_BIN)/$(BINARY)" test: go test ./... version: build ./bin/$(BINARY) version # Record a full feature walkthrough (requires vhs: https://github.com/charmbracelet/vhs) demo: vhs demo.tape