SITE_NAME = ktyl.dev # configured in ~/.ssh/config HOST = pluto # a script on the remote server to move it on arrival REMOTE_SCRIPT = ./deploy-$(SITE_NAME) SRC_DIR = src IMG_DIR = img OUT_DIR = site ROOT_DIR = $(SRC_DIR)/root BLOG_BASE_DIR = blog/ BLOG_BUILD_DIR = $(BLOG_BASE_DIR)out/html/ BLOG_SRC_DIR = $(BLOG_BASE_DIR)blogs BLOG_OUT_DIR = $(OUT_DIR)/blog BLOG_TMP_DIR = .blogtmp PAGES = $(shell find $(ROOT_DIR) -wholename "$(ROOT_DIR)*.html") STYLES = $(shell find $(ROOT_DIR) -wholename "$(ROOT_DIR)*.css") BLOG_PAGES = $(shell find $(BLOG_SRC_DIR) -wholename "$(BLOG_SRC_DIR)*.md") BLOG_IMAGES = $(shell find $(BLOG_SRC_DIR) -wholename "$(BLOG_SRC_DIR)*.png" -o -wholename "$(BLOG_SRC_DIR)*.jpg") IMAGES = $(shell find $(IMG_DIR) -wholename "$(IMG_DIR)/*.png") HTML_INCLUDES = $(shell find $(SRC_DIR)/inc_html -name *.html) CSS_INCLUDES = $(shell find $(SRC_DIR)/inc_css -name *.css) BLOG_INDEX = $(OUT_DIR)/blog.html BLOG_RSS = $(BLOG_OUT_DIR)/index.xml BLOG_INDEX_LINKS = $(BLOG_TMP_DIR)/blogindexlinks.html BLOG_TARGETS = $(BLOG_PAGES:$(BLOG_SRC_DIR)/%.md=$(BLOG_OUT_DIR)/%.html) BLOG_PNG_TARGETS = $(BLOG_IMAGES:$(BLOG_SRC_DIR)/%.png=$(BLOG_OUT_DIR)/%.png) BLOG_JPG_TARGETS = $(BLOG_IMAGES:$(BLOG_SRC_DIR)/%.jpg=$(BLOG_OUT_DIR)/%.jpg) HTML_TARGETS = $(PAGES:$(ROOT_DIR)/%.html=$(OUT_DIR)/%.html) CSS_TARGETS = $(STYLES:$(ROOT_DIR)/%.css=$(OUT_DIR)/%.css) PNG_TARGETS = $(IMG_DIR)/%.png=$(OUT_DIR)/%.png all: html blog | $(OUT_DIR) html: $(HTML_TARGETS) $(CSS_TARGETS) | $(OUT_DIR) cp $(IMG_DIR)/*.png $(OUT_DIR)/ cp $(IMG_DIR)/*.jpg $(OUT_DIR)/ deploy: site cp -r $(OUT_DIR) $(SITE_NAME) rsync -rP $(SITE_NAME) $(HOST):~ rm -r $(SITE_NAME) ssh $(HOST) "sudo $(REMOTE_SCRIPT)" $(OUT_DIR)/%.html: $(ROOT_DIR)/%.html $(HTML_INCLUDES) $(BLOG_INDEX_LINKS) | $(OUT_DIR) python ppp/ppp.py $< $(HTML_INCLUDES) $(BLOG_INDEX_LINKS) > $@ $(OUT_DIR)/%.css: $(ROOT_DIR)/%.css $(CSS_INCLUDES) | $(OUT_DIR) python ppp/ppp.py $< $(CSS_INCLUDES) > $@ $(OUT_DIR): mkdir -p $@ $(BLOG_OUT_DIR)/%.png: $(BLOG_SRC_DIR)/%.png cp $< $@ $(BLOG_OUT_DIR)/%.jpg: $(BLOG_SRC_DIR)/%.jpg cp $< $@ blog: $(BLOG_TARGETS) $(BLOG_PNG_TARGETS) $(BLOG_JPG_TARGETS) $(BLOG_RSS) | $(BLOG_TMP_DIR) $(BLOG_RSS): make --directory $(BLOG_BASE_DIR) html cp $(BLOG_BUILD_DIR)/index.xml $@ $(BLOG_INDEX_LINKS): $(BLOG_TARGETS) | $(BLOG_TMP_DIR) make --directory $(BLOG_BASE_DIR) html cp $(BLOG_BUILD_DIR)/index.html $@ $(BLOG_OUT_DIR)/%.html: $(BLOG_OUT_DIR)/%.html.tmp $(HTML_INCLUDES) $(CSS_TARGETS) python ppp/ppp.py $< $(HTML_INCLUDES) > $@ cp $(CSS_TARGETS) `dirname $@` rm $< $(BLOG_OUT_DIR)/%.html.tmp: $(BLOG_SRC_DIR)/%.md | $(BLOG_TMP_DIR) pipenv run python scripts/mkblog.py $< $@ $(BLOG_OUT_DIR): | $(OUT_DIR) mkdir -p $@ $(BLOG_TMP_DIR): mkdir -p $@ clean: rm -rf $(OUT_DIR) $(BLOG_TMP_DIR) .PHONY: site