.PHONY: build run test tidy lint docker hash-password nidusctl web-deps web-css templ-generate

## build: compile the binary
build:
	go build -o bin/davserver ./cmd/server
	go build -o bin/nidusctl ./tools/nidusctl

## run: run the server locally
run: build
	./bin/davserver -config config.yaml

## test: run all tests
test:
	go test ./... -v -race

## tidy: tidy go modules
tidy:
	go mod tidy

## lint: run golangci-lint
lint:
	golangci-lint run ./...

## docker: build Docker image
docker:
	docker build -t davserver:latest .

## compose: start with Docker Compose
compose:
	docker compose up --build

## hash-password: generate bcrypt hash for a password
## Usage: make hash-password PWD=mysecret
hash-password:
	@go run -v ./tools/hashpwd $(PWD)

## nidusctl: build and run the sharing-grant admin CLI
## Usage: make nidusctl ARGS="calendar share alice work bob write"
nidusctl: build
	./bin/nidusctl -config config.yaml $(ARGS)

## templ-generate: regenerate *_templ.go files from internal/web/templates/*.templ
templ-generate:
	templ generate

## web-deps: install the Tailwind CLI (needed once, or after web/package.json changes)
web-deps:
	cd web && npm install

## web-css: rebuild the compiled/embedded Tailwind CSS (web/static/app.css)
## Run this after editing any .templ file or web/input.css.
web-css: templ-generate
	cd web && npx @tailwindcss/cli -i ./input.css -o ./static/app.css --minify
