# List of all .templ files
TEMPL_FILES := $(shell find templates -type f -name '*.templ')

# Name of the generated file(s) from templ
GENERATED_FILES := $(TEMPL_FILES:.templ=_templ.go) 

# Generate Go files from .templ files only if they have changed
$(GENERATED_FILES): $(TEMPL_FILES)
	templ generate

TAILWIND_CONFIG := tailwind.config.js 
INPUT_CSS := input.css
OUTPUT_CSS := static/output.css

# generate tailwindcss output
$(OUTPUT_CSS): $(TEMPL_FILES) $(TAILWIND_CONFIG) $(INPUT_CSS)
	tailwindcss -i $(INPUT_CSS) -o $(OUTPUT_CSS)

# Run the server, with dependencies on templ and tailwind generation
run: $(GENERATED_FILES) $(OUTPUT_CSS)
	go run .

# this uses wgo to re-execute 'make run'
# which will toggle templ generate, when needed
# and then do `go run .` to rebuild all else
.PHONY: run/live
run/live:
	wgo -verbose -file=.go -file=.templ -file=$(INPUT_CSS) -file=$(TAILWIND_CONFIG) make run
