2021-04-26 20:53:10 +00:00
|
|
|
# Generate my website out of org-mode/gemini files
|
2021-05-17 21:27:37 +00:00
|
|
|
|
2021-04-26 20:53:10 +00:00
|
|
|
|
2021-05-08 08:33:02 +00:00
|
|
|
all: site
|
2021-04-27 12:34:29 +00:00
|
|
|
SRC_DIR ?= src
|
|
|
|
DST_DIR ?= _site
|
2021-05-07 16:02:58 +00:00
|
|
|
CACHE_DIR ?= .cache
|
2021-04-26 20:53:10 +00:00
|
|
|
|
2021-05-06 08:01:07 +00:00
|
|
|
# we don't want to publish files in drafts
|
|
|
|
NO_DRAFT := -not -path '$(SRC_DIR)/drafts/*'
|
2021-05-09 15:15:52 +00:00
|
|
|
# we don't copy source files
|
|
|
|
NO_SRC_FILE := ! -name '*.org'
|
2021-05-06 08:01:07 +00:00
|
|
|
|
|
|
|
# ASSETS
|
|
|
|
SRC_RAW_FILES := $(shell find $(SRC_DIR) -type f $(NO_DRAFT) $(NO_SRC_FILE))
|
|
|
|
DST_RAW_FILES := $(patsubst $(SRC_DIR)/%,$(DST_DIR)/%,$(SRC_RAW_FILES))
|
2021-05-17 21:27:37 +00:00
|
|
|
$(DST_DIR)/%: $(SRC_DIR)/%
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p "$(dir $@)"
|
2021-04-27 12:34:29 +00:00
|
|
|
cp "$<" "$@"
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: assets
|
2021-05-09 15:15:52 +00:00
|
|
|
assets: $(DST_RAW_FILES)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += assets
|
2021-04-26 20:53:10 +00:00
|
|
|
|
2021-05-09 15:15:52 +00:00
|
|
|
# CSS
|
|
|
|
SRC_CSS_FILES := $(shell find $(SRC_DIR) -type f -name '*.css')
|
|
|
|
DST_CSS_FILES := $(patsubst $(SRC_DIR)/%,$(DST_DIR)/%,$(SRC_RAW_FILES))
|
2021-05-17 21:27:37 +00:00
|
|
|
$(DST_DIR)/%.css: $(SRC_DIR)/%.css
|
2021-05-09 15:15:52 +00:00
|
|
|
@mkdir -p "$(dir $@)"
|
|
|
|
minify "$<" > "$@"
|
|
|
|
css: $(DST_CSS_FILES)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += css
|
2021-04-26 20:53:10 +00:00
|
|
|
|
2021-04-27 13:02:02 +00:00
|
|
|
# ORG -> HTML
|
2021-05-09 15:15:52 +00:00
|
|
|
EXT ?= .org
|
2021-05-02 09:17:38 +00:00
|
|
|
SRC_PANDOC_FILES ?= $(shell find $(SRC_DIR) -type f -name "*$(EXT)" $(NO_DRAFT))
|
2021-05-09 15:32:15 +00:00
|
|
|
DST_PANDOC_FILES ?= $(patsubst %$(EXT),%.html, \
|
2021-05-06 08:35:05 +00:00
|
|
|
$(patsubst $(SRC_DIR)/%,$(DST_DIR)/%, \
|
2021-04-27 12:34:29 +00:00
|
|
|
$(SRC_PANDOC_FILES)))
|
2021-05-09 15:15:52 +00:00
|
|
|
PANDOC_TEMPLATE ?= templates/post.html
|
2021-05-09 10:11:33 +00:00
|
|
|
MK_HTML := engine/mk-html.sh
|
2021-05-09 15:32:15 +00:00
|
|
|
PANDOC := $(MK_HTML) $(PANDOC_TEMPLATE)
|
2021-05-09 15:15:52 +00:00
|
|
|
$(DST_DIR)/%.html: $(SRC_DIR)/%.org $(PANDOC_TEMPLATE) $(MK_HTML)
|
|
|
|
@mkdir -p "$(dir $@)"
|
|
|
|
$(PANDOC) "$<" "$@.tmp"
|
|
|
|
minify --mime text/html "$@.tmp" > "$@"
|
|
|
|
@rm "$@.tmp"
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: html
|
2021-05-08 08:33:02 +00:00
|
|
|
html: $(DST_PANDOC_FILES)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += html
|
2021-05-07 16:02:58 +00:00
|
|
|
|
2021-05-08 11:33:14 +00:00
|
|
|
# INDEXES
|
2021-05-07 16:02:58 +00:00
|
|
|
SRC_POSTS_DIR ?= $(SRC_DIR)/posts
|
2021-05-08 08:07:10 +00:00
|
|
|
DST_POSTS_DIR ?= $(DST_DIR)/posts
|
|
|
|
SRC_POSTS_FILES ?= $(shell find $(SRC_POSTS_DIR) -type f -name "*$(EXT)")
|
2021-05-07 16:02:58 +00:00
|
|
|
RSS_CACHE_DIR ?= $(CACHE_DIR)/rss
|
2021-05-08 11:22:36 +00:00
|
|
|
DST_XML_FILES ?= $(patsubst %.org,%.xml, \
|
2021-05-07 16:02:58 +00:00
|
|
|
$(patsubst $(SRC_POSTS_DIR)/%,$(RSS_CACHE_DIR)/%, \
|
|
|
|
$(SRC_POSTS_FILES)))
|
2021-05-08 11:22:36 +00:00
|
|
|
$(RSS_CACHE_DIR)/%.xml: $(DST_POSTS_DIR)/%.html
|
|
|
|
@mkdir -p "$(dir $@)"
|
|
|
|
hxclean "$<" > "$@"
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: indexcache
|
2021-05-09 15:15:52 +00:00
|
|
|
indexcache: $(DST_XML_FILES)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += indexcache
|
2021-05-08 11:22:36 +00:00
|
|
|
|
2021-05-08 11:33:14 +00:00
|
|
|
# HTML INDEX
|
2021-05-25 14:27:58 +00:00
|
|
|
DST_INDEX_FILES ?= $(patsubst %.xml,%.index, $(DST_XML_FILES))
|
|
|
|
MK_INDEX_ENTRY := ./engine/mk-index-entry.sh
|
|
|
|
INDEX_CACHE_DIR ?= $(CACHE_DIR)/rss
|
|
|
|
$(INDEX_CACHE_DIR)/%.index: $(INDEX_CACHE_DIR)/%.xml $(MK_INDEX_ENTRY)
|
|
|
|
@mkdir -p $(INDEX_CACHE_DIR)
|
|
|
|
$(MK_INDEX_ENTRY) "$<" "$@"
|
|
|
|
|
2021-05-08 11:33:14 +00:00
|
|
|
HTML_INDEX := $(DST_DIR)/index.html
|
|
|
|
MKINDEX := engine/mk-index.sh
|
2021-05-25 08:25:11 +00:00
|
|
|
INDEX_TEMPLATE ?= templates/index.html
|
2021-05-25 14:27:58 +00:00
|
|
|
$(HTML_INDEX): $(DST_INDEX_FILES) $(MKINDEX) $(INDEX_TEMPLATE)
|
2021-05-08 11:33:14 +00:00
|
|
|
@mkdir -p $(DST_DIR)
|
|
|
|
$(MKINDEX)
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: index
|
2021-05-08 11:33:14 +00:00
|
|
|
index: $(HTML_INDEX)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += index
|
2021-05-08 11:33:14 +00:00
|
|
|
|
|
|
|
# RSS
|
2021-05-08 11:22:36 +00:00
|
|
|
DST_RSS_FILES ?= $(patsubst %.xml,%.rss, $(DST_XML_FILES))
|
2021-05-07 16:02:58 +00:00
|
|
|
MK_RSS_ENTRY := ./engine/mk-rss-entry.sh
|
2021-05-08 11:22:36 +00:00
|
|
|
$(RSS_CACHE_DIR)/%.rss: $(RSS_CACHE_DIR)/%.xml $(MK_RSS_ENTRY)
|
2021-05-07 16:02:58 +00:00
|
|
|
@mkdir -p $(RSS_CACHE_DIR)
|
2021-05-08 08:07:10 +00:00
|
|
|
$(MK_RSS_ENTRY) "$<" "$@"
|
2021-05-07 16:02:58 +00:00
|
|
|
|
2021-05-06 22:21:41 +00:00
|
|
|
RSS := $(DST_DIR)/rss.xml
|
|
|
|
MKRSS := engine/mkrss.sh
|
2021-05-07 16:02:58 +00:00
|
|
|
$(RSS): $(DST_RSS_FILES) $(MKRSS)
|
2021-05-06 22:21:41 +00:00
|
|
|
$(MKRSS)
|
2021-05-25 08:25:11 +00:00
|
|
|
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: rss
|
2021-05-25 14:27:58 +00:00
|
|
|
rss: $(RSS)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += rss
|
2021-05-08 08:07:10 +00:00
|
|
|
|
|
|
|
|
2021-04-27 13:02:02 +00:00
|
|
|
# ORG -> GEMINI
|
|
|
|
EXT := .org
|
2021-05-02 09:17:38 +00:00
|
|
|
SRC_GMI_FILES ?= $(shell find $(SRC_DIR) -type f -name "*$(EXT)" $(NO_DRAFT))
|
2021-04-27 13:02:02 +00:00
|
|
|
DST_GMI_FILES ?= $(subst $(EXT),.gmi, \
|
2021-05-08 08:07:10 +00:00
|
|
|
$(patsubst $(SRC_DIR)/%,$(DST_DIR)/%, \
|
2021-04-27 13:02:02 +00:00
|
|
|
$(SRC_GMI_FILES)))
|
|
|
|
GMI := engine/org2gemini.sh
|
2021-05-02 09:17:38 +00:00
|
|
|
$(DST_DIR)/%.gmi: $(SRC_DIR)/%.org $(GMI) engine/org2gemini_step1.sh
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p $(dir $@)
|
2021-04-27 13:02:02 +00:00
|
|
|
$(GMI) "$<" "$@"
|
2021-05-06 08:01:07 +00:00
|
|
|
ALL += $(DST_GMI_FILES)
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: gmi
|
2021-05-08 08:33:02 +00:00
|
|
|
gmi: $(DST_GMI_FILES)
|
2021-04-27 13:02:02 +00:00
|
|
|
|
2021-05-02 19:24:37 +00:00
|
|
|
# GEMINI INDEX
|
|
|
|
GMI_INDEX := $(DST_DIR)/index.gmi
|
|
|
|
MK_GMI_INDEX := engine/mk-gemini-index.sh
|
|
|
|
$(GMI_INDEX): $(DST_GMI_FILES) $(MK_GMI_INDEX)
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p $(DST_DIR)
|
2021-05-02 19:24:37 +00:00
|
|
|
$(MK_GMI_INDEX)
|
|
|
|
ALL += $(GMI_INDEX)
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: gmi-index
|
2021-05-08 08:33:02 +00:00
|
|
|
gmi-index: $(GMI_INDEX)
|
2021-04-27 13:02:02 +00:00
|
|
|
|
2021-05-06 22:21:41 +00:00
|
|
|
# RSS
|
|
|
|
GEM_ATOM := $(DST_DIR)/gem-atom.xml
|
|
|
|
MK_GEMINI_ATOM := engine/mk-gemini-atom.sh
|
|
|
|
$(GEM_ATOM): $(DST_GMI_FILES) $(MK_GEMINI_ATOM)
|
|
|
|
$(MK_GEMINI_ATOM)
|
|
|
|
ALL += $(GEM_ATOM)
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: gmi-atom
|
2021-05-08 08:33:02 +00:00
|
|
|
gmi-atom: $(GMI_ATOM)
|
2021-05-06 08:01:07 +00:00
|
|
|
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: gemini
|
2021-05-08 08:07:10 +00:00
|
|
|
gemini: $(DST_GMI_FILES) $(GMI_INDEX) $(GEM_ATOM)
|
|
|
|
|
2021-05-05 21:35:53 +00:00
|
|
|
# Images
|
2021-05-06 08:01:07 +00:00
|
|
|
SRC_IMG_FILES ?= $(shell find $(SRC_DIR) -type f -name "*.jpg" -or -name "*.jpeg" -or -name "*.gif" -or -name "*.png")
|
2021-05-05 21:35:53 +00:00
|
|
|
DST_IMG_FILES ?= $(patsubst $(SRC_DIR)/%,$(DST_DIR)/%, $(SRC_IMG_FILES))
|
2021-06-02 10:24:22 +00:00
|
|
|
OPTIM_IMG := engine/optim-img.sh
|
2021-05-05 21:35:53 +00:00
|
|
|
|
2021-06-02 10:24:22 +00:00
|
|
|
$(DST_DIR)/%.jpg: $(SRC_DIR)/%.jpg $(OPTIM_IMG)
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p $(dir $@)
|
2021-06-02 10:24:22 +00:00
|
|
|
$(OPTIM_IMG) "$<" "$@"
|
2021-05-06 08:01:07 +00:00
|
|
|
|
2021-06-02 10:24:22 +00:00
|
|
|
$(DST_DIR)/%.jpg: $(SRC_DIR)/%.jpeg $(OPTIM_IMG)
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p $(dir $@)
|
2021-06-02 10:24:22 +00:00
|
|
|
$(OPTIM_IMG) "$<" "$@"
|
2021-05-05 21:35:53 +00:00
|
|
|
|
2021-06-02 10:24:22 +00:00
|
|
|
$(DST_DIR)/%.gif: $(SRC_DIR)/%.gif $(OPTIM_IMG)
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p $(dir $@)
|
2021-06-02 10:24:22 +00:00
|
|
|
$(OPTIM_IMG) "$<" "$@"
|
2021-05-05 21:35:53 +00:00
|
|
|
|
2021-06-02 10:24:22 +00:00
|
|
|
$(DST_DIR)/%.png: $(SRC_DIR)/%.png $(OPTIM_IMG)
|
2021-05-06 08:01:07 +00:00
|
|
|
@mkdir -p $(dir $@)
|
2021-06-02 10:24:22 +00:00
|
|
|
$(OPTIM_IMG) "$<" "$@"
|
2021-05-05 21:35:53 +00:00
|
|
|
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: img
|
2021-05-08 08:33:02 +00:00
|
|
|
img: $(DST_IMG_FILES)
|
2021-05-17 21:27:37 +00:00
|
|
|
ALL += $(DST_IMG_FILES)
|
2021-05-08 08:33:02 +00:00
|
|
|
|
2021-04-27 13:21:06 +00:00
|
|
|
# DEPLOY
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: site
|
2021-05-08 08:33:02 +00:00
|
|
|
site: $(ALL)
|
2021-04-27 13:21:06 +00:00
|
|
|
|
2021-05-17 21:27:37 +00:00
|
|
|
.PHONY: deploy
|
2021-05-06 22:21:41 +00:00
|
|
|
deploy: $(ALL)
|
2021-04-27 13:21:06 +00:00
|
|
|
engine/sync.sh # deploy to her.esy.fun
|
|
|
|
engine/ye-com-fastpublish.hs # deploy to yannesposito.com (via github pages)
|
2021-04-27 13:06:55 +00:00
|
|
|
|
2021-04-27 13:32:55 +00:00
|
|
|
.PHONY: clean
|
2021-04-26 20:53:10 +00:00
|
|
|
clean:
|
2021-05-06 22:21:41 +00:00
|
|
|
-[ ! -z "$(DST_DIR)" ] && rm -rf $(DST_DIR)/*
|
2021-05-07 16:02:58 +00:00
|
|
|
-[ ! -z "$(CACHE_DIR)" ] && rm -rf $(CACHE_DIR)/*
|