site/Makefile

92 lines
2.2 KiB
Makefile
Raw Normal View History

2024-01-06 09:10:35 +00:00
SRCDIR = src
DISTDIR = dist
STATICDIR = static
2024-01-06 09:10:35 +00:00
CSSDIR = $(DISTDIR)/css
SCSSDIR = $(SRCDIR)/scss
SCSSINCDIR = $(SCSSDIR)/includes
2024-01-27 08:33:38 +00:00
JSDIR = js
2024-01-06 09:10:35 +00:00
SCSSFILES = $(wildcard $(SCSSDIR)/*.scss)
CSSFILES = $(patsubst $(SCSSDIR)/%.scss, $(CSSDIR)/%.css, $(SCSSFILES))
MDFILES = $(shell find $(SRCDIR) -type f -name '*.md')
HTMLFILES = $(patsubst $(SRCDIR)/%.md, $(DISTDIR)/%.html, $(MDFILES))
TMPL = $(SRCDIR)/tmpl.html
2024-01-27 08:33:38 +00:00
STATICFILES = $(shell find $(STATICDIR) -type f -name '*')
2024-01-27 08:33:38 +00:00
STATICOUT = $(patsubst $(STATICDIR)/%, $(DISTDIR)/%, $(STATICFILES))
JSFILES = $(shell find $(JSDIR) -type f -name '*.js')
MINIFIEDFILES := $(patsubst $(JSDIR)/%.js, $(DISTDIR)/%.min.js, $(JSFILES))
2024-01-06 09:10:35 +00:00
URI = "https://bear.oops.wtf"
.PHONY: all
2024-01-27 08:33:38 +00:00
all: html css $(DISTDIR)/robots.txt $(DISTDIR)/sitemap.xml $(DISTDIR)/blogindex.txt static js
2024-01-06 09:10:35 +00:00
# Build
.PHONY: html
html: $(HTMLFILES)
#$(DISTDIR)/%.html: $(SRCDIR)/%.md
# pandoc --from markdown --to html --standalone $< -o $@
$(DISTDIR)/%.html: $(SRCDIR)/%.md $(TMPL)
2024-01-27 08:33:38 +00:00
@mkdir -pv $(dir $@)
2024-01-06 09:10:35 +00:00
pandoc \
--from markdown_github+smart+yaml_metadata_block+auto_identifiers \
--to html \
--template $(TMPL) \
-o $@ $<
2024-01-27 08:33:38 +00:00
.PHONY: js
js: $(MINIFIEDFILES)
$(DISTDIR)/%.min.js: $(JSDIR)/%.js
uglifyjs $< -m -c --mangle-props -o $@
2024-01-06 09:10:35 +00:00
.PHONY: css
css: $(CSSFILES)
$(CSSDIR)/%.css: $(SCSSDIR)/%.scss | $(CSSDIR)
sass --load-path=$(SCSSINCDIR) --style=compressed --scss $< $@
$(CSSDIR):
mkdir -p $@
$(DISTDIR)/robots.txt:
@echo "User-Agent: *" > $@
@echo "Allow: *" >> $@
@echo "Sitemap: $(URI)/sitemap.xml" >> $@
$(DISTDIR)/sitemap.xml: $(HTMLFILES)
@echo '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' > $@
@for f in $^; do \
echo "<url><loc>$(URI)$${f#$(DISTDIR)}</loc></url>" >> $@; \
done
@echo '</urlset>' >> $@
$(DISTDIR)/blogindex.txt: $(HTMLFILES)
@> $@
@for f in $^; do \
uri="$(URI)$${f#$(DISTDIR)}"; \
if [[ "$$uri" == "$(URI)/blog/"* ]]; then \
echo "$$uri" >> $@; \
fi; \
done
2024-01-06 09:10:35 +00:00
.PHONY: clean
clean:
2024-01-27 08:33:38 +00:00
rm -rfv $(DISTDIR)/*
2024-01-06 09:10:35 +00:00
.PHONY: help
help:
@egrep -h '\s##\s' $(MAKEFILE_LIST) | \
2024-01-26 10:10:25 +00:00
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[34m%-15s\033[0m %s\n", $$1, $$2}'
.PHONY: static
2024-01-27 08:33:38 +00:00
static: $(STATICOUT)
$(STATICOUT): $(STATICFILES)
@mkdir -p $(dir $@)
@cp -v $< $@