48 lines
1.4 KiB
Makefile
48 lines
1.4 KiB
Makefile
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/
|