her.esy.fun/Makefile

124 lines
3.3 KiB
Makefile
Raw Normal View History

2021-04-26 20:53:10 +00:00
# Generate my website out of org-mode/gemini files
#
# maybe check https://themattchan.com/blog/2017-02-28-make-site-generator.html
2021-04-27 12:34:29 +00:00
# From https://github.com/fcanas/bake/blob/master/Makefile
# Finally https://www.arsouyes.org/blog/2017/10_Static_website/
2021-04-26 20:53:10 +00:00
all: fast
2021-04-27 12:34:29 +00:00
SRC_DIR ?= src
DST_DIR ?= _site
2021-04-26 20:53:10 +00:00
# we don't want to publish files in drafts
NO_DRAFT := -not -path '$(SRC_DIR)/drafts/*'
# we don't copy source files, nor images, they are transformed
NO_SRC_FILE := ! -name '*.org' ! -name '*.jpg' ! -name '*.png' ! -name '*.jpeg' ! -name '*.gif'
# 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-04-27 12:34:29 +00:00
$(DST_DIR)/% : $(SRC_DIR)/%
@mkdir -p "$(dir $@)"
2021-04-27 12:34:29 +00:00
cp "$<" "$@"
ALL += $(DST_RAW_FILES)
2021-04-26 20:53:10 +00:00
2021-04-27 13:02:02 +00:00
# ORG -> HTML
2021-04-27 12:34:29 +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-04-27 12:34:29 +00:00
DST_PANDOC_FILES ?= $(subst $(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)))
TEMPLATE ?= templates/post.html
CSS = /css/y.css
PANDOC := pandoc \
-c $(CSS) \
--template=$(TEMPLATE) \
--from org \
--to html5 \
--standalone
$(DST_DIR)/%.html: $(SRC_DIR)/%.org $(TEMPLATE)
@mkdir -p $(dir $@)
2021-04-27 12:34:29 +00:00
$(PANDOC) $< \
--output $@
ALL += $(DST_PANDOC_FILES)
2021-04-27 12:34:29 +00:00
2021-04-27 13:02:02 +00:00
# HTML INDEX
HTML_INDEX := $(DST_DIR)/index.html
2021-04-27 13:21:06 +00:00
MKINDEX := engine/mk-index.sh
2021-04-27 13:32:55 +00:00
$(HTML_INDEX): $(DST_PANDOC_FILES) $(MKINDEX)
@mkdir -p $(DST_DIR)
2021-04-27 13:21:06 +00:00
$(MKINDEX)
2021-04-27 13:02:02 +00:00
ALL += $(HTML_INDEX)
# 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, \
$(subst $(SRC_DIR),$(DST_DIR), \
$(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
@mkdir -p $(dir $@)
2021-04-27 13:02:02 +00:00
$(GMI) "$<" "$@"
ALL += $(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)
@mkdir -p $(DST_DIR)
2021-05-02 19:24:37 +00:00
$(MK_GMI_INDEX)
ALL += $(GMI_INDEX)
2021-04-27 13:02:02 +00:00
2021-05-05 21:35:53 +00:00
2021-05-05 21:35:53 +00:00
# Images
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))
$(DST_DIR)/%.jpg: $(SRC_DIR)/%.jpg
@mkdir -p $(dir $@)
convert "$<" -quality 50 -resize 800x800\> "$@"
$(DST_DIR)/%.jpg: $(SRC_DIR)/%.jpeg
@mkdir -p $(dir $@)
2021-05-05 21:35:53 +00:00
convert "$<" -quality 50 -resize 800x800\> "$@"
$(DST_DIR)/%.gif: $(SRC_DIR)/%.gif
@mkdir -p $(dir $@)
2021-05-05 21:35:53 +00:00
convert "$<" -quality 50 -resize 800x800\> "$@"
$(DST_DIR)/%.png: $(SRC_DIR)/%.png
@mkdir -p $(dir $@)
2021-05-05 21:35:53 +00:00
convert "$<" -quality 50 -resize 800x800\> "$@"
2021-05-06 08:35:05 +00:00
ALL += $(DST_IMG_FILES)
2021-04-27 13:06:55 +00:00
# OPTIM PHASE
OPTIM_DIR ?= _optim
2021-05-02 08:32:40 +00:00
ENGINE_DIR ?= engine
ENGINE_SCRIPTS := $(shell find $(ENGINE_DIR) -type f)
2021-04-27 13:21:06 +00:00
OPTIM := engine/pre-deploy.sh
2021-05-02 08:32:40 +00:00
$(OPTIM_DIR)/index.html:$(DST_RAW_FILES) $(DST_GMI_FILES) $(DST_PANDOC_FILES) $(HTML_INDEX) $(ENGINE_SCRIPTS) $(OPTIM)
@mkdir -p $(OPTIM_DIR)
2021-04-27 13:21:06 +00:00
$(OPTIM)
2021-04-27 13:06:55 +00:00
optim: $(OPTIM_DIR)/index.html
2021-04-27 13:21:06 +00:00
# DEPLOY
2021-04-27 13:06:55 +00:00
deploy: $(OPTIM_DIR)/index.html
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
fast: $(ALL)
2021-04-26 20:53:10 +00:00
2021-04-27 13:32:55 +00:00
.PHONY: clean
2021-04-26 20:53:10 +00:00
clean:
2021-04-27 13:32:55 +00:00
-rm -rf $(DST_DIR)/*
-rm -rf $(OPTIM_DIR)/*