.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, %.gem, $(filter-out blog.html, $(PAGES)))) all: $(PAGES_DIR)/blog.html $(TARGETS) gemini mkdir_gemini: mkdir -p $(GEMINI_DIST_DIR) mkdir -p $(GEMINI_DIST_DIR)/blog $(GEMINI_DIST_DIR)/%.gem: $(DIST_DIR)/%.html | mkdir_gemini pandoc -f html -t markdown $(DIST_DIR)/$*.html | md2gemini > $(GEMINI_DIST_DIR)/$*.gem gemini_blog: | mkdir_gemini find $(BLOG_DIR) -iname "*.md" -exec bash -c 'md2gemini < {} > $(GEMINI_DIST_DIR)/blog/`basename -s .md {}`.gem' \; gemini: $(TARGETS) $(GEMINI_TARGETS) gemini_blog 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 rm -rf $(GEMINI_DIST_DIR)