SHELL := /bin/bash POSTS := content/posts .DEFAULT_GOAL := help .PHONY: help new serve build publish clean help: @echo 'targets:' @echo ' make new SLUG= TITLE="<标题>" [SUMMARY="<摘要>"] # 新建文章' @echo ' make serve # hugo server -D (需装 hugo)' @echo ' make build # hugo build 到 public/' @echo ' make publish MSG="post: " # 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 ''; \ } > $(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/