BINARY   = website
MODULE   = ridgwaysystems.org/website
CMD      = ./cmd/server

# Default target
.PHONY: build
build:
	go build -o $(BINARY) $(CMD)

# Run locally in dev mode (template hot-reloading)
.PHONY: run
run:
	DEV=1 PORT=8080 go run $(CMD)

# Run with a .env file
.PHONY: run-env
run-env:
	@test -f .env || (echo "No .env file found. Copy .env.example and fill it in." && exit 1)
	env $$(cat .env | grep -v '^\#' | xargs) go run $(CMD)

# Cross-compile for OpenBSD amd64
.PHONY: cross
cross:
	GOOS=openbsd GOARCH=amd64 go build -ldflags="-s -w" -o $(BINARY)-openbsd-amd64 $(CMD)

# Generate an admin password hash
.PHONY: genhash
genhash:
	@read -p "Password: " pw && go run ./tools/genhash "$$pw"

# Download / tidy dependencies
.PHONY: tidy
tidy:
	go mod tidy

# Vet and lint
.PHONY: vet
vet:
	go vet ./...

# Run tests (when there are any)
.PHONY: test
test:
	go test ./...

# Clean build artifacts
.PHONY: clean
clean:
	rm -f $(BINARY) $(BINARY)-openbsd-amd64
	rm -f static/css/syntax.css

# Upload static files and binary to OpenBSD server
# Set DEPLOY_HOST to your server (e.g. srv01 or user@10.0.10.10)
DEPLOY_HOST ?= srv01
DEPLOY_DIR  ?= /var/www/ridgwaysystems

.PHONY: deploy
deploy: cross
	ssh $(DEPLOY_HOST) "rcctl stop $(BINARY); pkill $(BINARY); true"
	scp $(BINARY)-openbsd-amd64 $(DEPLOY_HOST):/usr/local/bin/$(BINARY)
	rsync -av --delete templates/ $(DEPLOY_HOST):$(DEPLOY_DIR)/templates/
	rsync -av --delete static/    $(DEPLOY_HOST):$(DEPLOY_DIR)/static/
	rsync -av content/            $(DEPLOY_HOST):$(DEPLOY_DIR)/content/
	ssh $(DEPLOY_HOST) rcctl start $(BINARY)

.PHONY: help
help:
	@echo "Targets:"
	@echo "  build       Build binary for current OS"
	@echo "  run         Run locally in dev mode"
	@echo "  run-env     Run with .env file"
	@echo "  cross       Cross-compile for OpenBSD amd64"
	@echo "  genhash     Generate bcrypt hash for admin password"
	@echo "  tidy        go mod tidy"
	@echo "  vet         go vet"
	@echo "  deploy      Cross-compile and deploy to OpenBSD server"
	@echo "  clean       Remove build artifacts"
