# GNUmakefile --- GNU Makefile for building my personal site # Copyright (c) 2020-2021 bandali # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. This file is offered as-is, # without any warranty. gen = perl txt2pre $(1) < $< > $@ port := $(if $(port),$(port),8000) TXT := $(filter-out bandali-pubkey.txt bandali.txt,$(wildcard *.txt)) OUT := $(patsubst %.txt,%.html,$(TXT)) OUT := $(patsubst bandali-%.html,%.html,$(OUT)) FEEDS := notes.atom notes.rss NOTES := $\ libreplanet-2021.txt $\ fsf-internship-beyond.txt $\ fsf-internship-intro.txt $\ bandali-computing.txt $\ TXT_FA := $(filter-out fa/bandali.fa.txt,$(wildcard fa/*.fa.txt)) OUT_FA := $(patsubst fa/%.fa.txt,fa/%.html,$(TXT_FA)) OUT_FA := $(patsubst fa/bandali-%.html,fa/%.html,$(OUT_FA)) FEEDS_FA := fa/notes.atom fa/notes.rss NOTES_FA := $\ fa/fsf-internship-beyond.fa.txt $\ fa/fsf-internship-intro.fa.txt $\ fa/bandali-computing.fa.txt $\ all: $(OUT) $(FEEDS) index.html $(OUT_FA) $(FEEDS_FA) fa/index.html %.html: bandali-%.txt txt2pre; $(gen) %.html: %.txt txt2pre; $(gen) index.html: bandali.txt txt2pre; $(call gen,--index) notes.%: $(NOTES) txt2pre perl txt2pre --index --header --format='$*' > $@ for n in $(NOTES); do perl txt2pre --format='$*' < "$$n" >> $@; done perl txt2pre --index --footer --format='$*' >> $@ fa/%.html: fa/bandali-%.fa.txt txt2pre; $(call gen,--lang='fa') fa/%.html: fa/%.fa.txt txt2pre; $(call gen,--lang='fa') fa/index.html: fa/bandali.fa.txt txt2pre; $(call gen,--lang='fa' --index) fa/notes.%: $(NOTES_FA) txt2pre perl txt2pre --lang='fa' --index --header --format='$*' > $@ for n in $(NOTES_FA); do perl txt2pre --lang='fa' --format='$*' < "$$n" >> $@; done perl txt2pre --lang='fa' --index --footer --format='$*' >> $@ clean: rm -f $(OUT) $(OUT_FA) index.html fa/index.html serve: python -m http.server $(port) || python -m SimpleHTTPServer $(port) watch: while true; do \ echo $(TXT) $(TXT_FA) bandali.txt fa/bandali.fa.txt \ GNUmakefile txt2pre | tr " " "\n" | entr -d make; done .PHONY: all clean serve watch