SHELL := /bin/bash
POSTS := content/posts

.DEFAULT_GOAL := help

.PHONY: help new serve build publish clean

help:
	@echo 'targets:'
	@echo '  make new SLUG=<slug> TITLE="<标题>" [SUMMARY="<摘要>"]   # 新建文章'
	@echo '  make serve                                              # hugo server -D (需装 hugo)'
	@echo '  make build                                              # hugo build 到 public/'
	@echo '  make publish MSG="post: <slug>"                         # commit + push, 触发 CI'
	@echo '  make clean                                              # rm -rf public/'

new:
	@test -n "$(SLUG)"  || { echo 'SLUG required';  exit 1; }
	@test -n "$(TITLE)" || { echo 'TITLE required'; exit 1; }
	@test ! -e $(POSTS)/$(SLUG).md || { echo "$(POSTS)/$(SLUG).md already exists"; exit 1; }
	@DATE="$$(date '+%Y-%m-%dT%H:%M:%S%:z')"; \
	{ \
	  echo '---'; \
	  echo 'title: "$(TITLE)"'; \
	  echo "date: $$DATE"; \
	  echo 'draft: false'; \
	  if [ -n "$(SUMMARY)" ]; then echo 'summary: "$(SUMMARY)"'; fi; \
	  echo '---'; \
	  echo ''; \
	  echo '<!-- 正文写这里 (markdown) -->'; \
	} > $(POSTS)/$(SLUG).md
	@echo "created $(POSTS)/$(SLUG).md"

serve:
	hugo server -D

build:
	hugo --minify --gc

publish:
	@test -n "$(MSG)" || { echo 'MSG required (e.g. MSG="post: 你好世界")'; exit 1; }
	git add content/
	@git diff --cached --quiet && { echo 'nothing to commit'; exit 1; } || true
	git commit -m "$(MSG)"
	git push

clean:
	rm -rf public/
