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
