S3_BUCKET ?= s3://donny.nyc
CF_DISTRIBUTION_ID ?=

.PHONY: build dev deploy invalidate

build:
	docker build -t unprompted .

dev:
	docker run --rm -v $$(pwd):/app -w /app -p 8080:8080 node:22-alpine sh -c "yarn install && yarn dev --port 8080"

# CLAUDE.md is re-uploaded as text/plain: sync guesses text/markdown for .md,
# which Firefox downloads instead of displaying in the tab.
deploy: build
	docker run --rm \
		-e AWS_ACCESS_KEY_ID \
		-e AWS_SECRET_ACCESS_KEY \
		-e AWS_DEFAULT_REGION \
		unprompted \
		sh -c "aws s3 sync /site $(S3_BUCKET) --delete && aws s3 cp /site/CLAUDE.md $(S3_BUCKET)/CLAUDE.md --content-type 'text/plain; charset=utf-8'"

invalidate:
ifdef CF_DISTRIBUTION_ID
	aws cloudfront create-invalidation \
		--distribution-id $(CF_DISTRIBUTION_ID) \
		--paths "/*"
else
	@echo "CF_DISTRIBUTION_ID not set, skipping invalidation"
endif
