52 lines
1.5 KiB
Makefile
52 lines
1.5 KiB
Makefile
.PHONY: all mkdist watch clean
|
|
|
|
SRC_DIR = src
|
|
RES_DIR = res
|
|
PAGES_DIR = $(SRC_DIR)/pages
|
|
BLOG_DIR = $(SRC_DIR)/blog
|
|
DIST_DIR = dist
|
|
GEMINI_DIST_DIR = dist_gemini
|
|
BUILD_DIR = build
|
|
|
|
PAGES = $(notdir $(wildcard $(PAGES_DIR)/*.html))
|
|
BLOG_PAGES = $(wildcard $(BLOG_DIR)/*.md)
|
|
TARGETS = $(addprefix $(DIST_DIR)/,$(PAGES))
|
|
GEMINI_TARGETS = $(addprefix $(GEMINI_DIST_DIR)/,$(patsubst %.html, %.md, $(PAGES)))
|
|
|
|
all: $(PAGES_DIR)/blog.html $(TARGETS)
|
|
|
|
mkdir_gemini:
|
|
mkdir -p $(GEMINI_DIST_DIR)
|
|
|
|
$(GEMINI_DIST_DIR)/%.md: $(DIST_DIR)/%.html
|
|
pandoc -f html -t markdown $(DIST_DIR)/$*.html -o $(GEMINI_DIST_DIR)/$*.md
|
|
|
|
gemini: all $(GEMINI_TARGETS) | mkdir_gemini
|
|
|
|
watch:
|
|
find ./$(SRC_DIR) -iname '*.html' -o -name "*.css" | entr -d make -f ./Makefile ;
|
|
|
|
mkdirs:
|
|
mkdir -p $(DIST_DIR)
|
|
mkdir -p $(BUILD_DIR)
|
|
|
|
template: $(SRC_DIR)/start.html $(SRC_DIR)/nav.html $(SRC_DIR)/side.html | mkdirs
|
|
cp -r $(SRC_DIR)/styles $(DIST_DIR)
|
|
cat $(SRC_DIR)/start.html $(SRC_DIR)/nav.html $(SRC_DIR)/side.html > $(BUILD_DIR)/template.html
|
|
|
|
favicon: $(RES_DIR) | mkdirs
|
|
cp res/* dist/
|
|
|
|
$(PAGES_DIR)/blog.html: $(BLOG_PAGES) $(BLOG_DIR)/start_blog.html $(BLOG_DIR)/end_blog.html
|
|
pandoc -f markdown -t html $^ -o $@.tmp
|
|
cat $(BLOG_DIR)/start_blog.html $@.tmp $(BLOG_DIR)/end_blog.html > $@
|
|
rm $@.tmp
|
|
|
|
$(DIST_DIR)/%.html: $(PAGES_DIR)/%.html | template mkdist
|
|
cat $(BUILD_DIR)/template.html $(PAGES_DIR)/$*.html $(SRC_DIR)/end.html > $@
|
|
|
|
clean:
|
|
rm -rf $(DIST_DIR)
|
|
rm -rf $(BUILD_DIR)
|
|
rm -rf $(PAGES_DIR)/blog.html
|